3

我有以下代码,我希望能够手动输入 JSON 键以返回值

import json

with open('profile') as edstats:
    data = json.load(edstats)

def stats():
    r = data[raw_input('JSON Keys:')]
    return r

我运行以下命令并收到此错误。

>>> execfile('edjson.py')
>>> credits()
JSON Keys:['commander']['name']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "edjson.py", line 7, in credits
    r = data[raw_input('JSON Keys:')]
KeyError: "['commander']['name']"
>>>

以下是 JSON 文件的示例:

{
"commander": {
    "id": 1111111,
    "name": "xxxxxxxx",
    "credits": 12345678,
    "debt": 0,
    "currentShipId": 2,
    "alive": true,
    "docked": false,
    "rank": {
        "combat": 3,
        "trade": 4,
        "explore": 5,
        "crime": 0,
        "service": 0,
        "empire": 0,
        "federation": 0
    }
},
"lastSystem": {
    "id": "12342356464335",
    "name": "xxxx xxx xxxx"
}
}
4

1 回答 1

2

您还可以将用户的键列表作为逗号分隔值:

import json

with open('profile.json') as edstats:
    data = json.load(edstats)
inp = raw_input('JSON Keys:').split(',')
r = data
for item in inp:
    r = r[item]
print r

>>> python script.py
JSON Keys:commander,name
xxxxxxxx

>>> python script.py
JSON Keys:commander,rank,explore
5
于 2015-04-19T20:17:04.713 回答