2017-12-28 2 views
0

Mein Programm hat eine JSON-Klasse und ich muss auf bestimmte Elemente zugreifen.Zugreifen auf geschachtelte JSON-Daten in Python

Ich verstehe nicht genau, welche Art von Datenstruktur es ist, die Teil meines Problems sein kann.

Ich habe versucht json.dumps() und json.load(), die beide Fehler zurückgeben. Ich habe sogar versucht ._dict_.

ich unten irrtümlicherweise erhalten haben:
"the JSON object must be str, bytes or bytearray, not 'LambdaContext'," "'LambdaContext' object has no attribute '_dict_'," and "Object of type 'LambdaContext' is not JSON serializable." I don't know what else to do with this JSON data.

ich zugreifen müssen "apiAccessToken."

Die JSON-Daten:

{ 
    "context": { 
    "System": { 
     "apiAccessToken": "AxThk...", 
     "apiEndpoint": "https://api.amazonalexa.com", 
     "device": { 
     "deviceId": "string-identifying-the-device", 
     "supportedInterfaces": {} 
     }, 
     "application": { 
     "applicationId": "string" 
     }, 
     "user": {} 
    } 
    } 
} 

Mein Code:

def postalCodeRetriever(intent, session, context): 
    deviceId = session['user']['userId'] 
    jsoninfo = json.dumps(context) 
    json_dict = json.loads(jsoninfo) 
    print(str(json_dict)) 
    TOKEN = context["System"] 
    print(TOKEN) 
    URL = "https://api.amazonalexa.com/v1/devices/" + deviceId + "/settings/address/countryAndPostalCode" 
    HEADER = {'Accept': 'application/json', 'Authorization': 'Bearer ' + TOKEN} 
    response = urllib2.urlopen(URL, headers=HEADER) 
    data = json.load(response) 
    postalCode = data['postalCode'] 
    return build_response({}, build_speechlet_response(
       "hello", postalCode, None, True)) 
+1

Können Sie Ihre Frage bearbeiten und hinzufügen, wie Sie versuchen, diese Daten zu lesen (zu parsen)? – BorrajaX

+1

Bitte geben Sie Ihren Code ein –

Antwort

1

Im Folgenden Code sollte es tun:

import json 
data = json.dumps({ 
    "context": { 
    "System": { 
     "apiAccessToken": "AxThk...", 
     "apiEndpoint": "https://api.amazonalexa.com", 
     "device": { 
     "deviceId": "string-identifying-the-device", 
     "supportedInterfaces": {} 
     }, 
     "application": { 
     "applicationId": "string" 
     }, 
     "user": {} 
    } 
    } 
}) 
data_dict = json.loads(data) 
print(data_dict['context']['System']['apiAccessToken']) 

Ausgang:

AxThk... 
+0

TypeError: Objekt des Typs 'LambdaContext' ist nicht serialisierbar –

Verwandte Themen