Search code examples
pythonjsonkeyerror

JSON KeyError parsing input


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

import json

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

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

I run the following and get 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 of the 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"
}
}

Solution

  • 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