Input to parse JSON KeyError

I have the following code where I want to be able to manually enter JSON keys to return a value

import json

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

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

      


I am running the following and getting this error.

>>> 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']"
>>>

      


Below is a sample JSON file:

{
"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"
}
}

      

+3


source to share


1 answer


You can also take the list of keys from the user as comma separated values:



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

      

+2


source







All Articles