2017-12-28 13 views
0

私のプログラムにはJSONクラスが与えられており、その中の特定のアイテムにアクセスする必要があります。Pythonで入れ子になったJSONデータにアクセスする

データ構造の種類がわかりません。これは私の問題の一部である可能性があります。

私はjson.dumps()json.load()を試しましたが、どちらもエラーを返します。私も._dict_を試しました。

私はエラーの下に受け取った: "apiAccessToken"
"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.

は、私がアクセスする必要があります

JSONデータに:

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

マイコード:コードの下

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

質問を編集し、そのデータをどのように読み込み(解析する)のかを追加できますか? – BorrajaX

+1

コードを投稿してください –

答えて

1

それを行う必要があります。

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

出力:

AxThk... 
+0

TypeError: 'LambdaContext'タイプのオブジェクトがJSONシリアライズ可能ではありません –

関連する問題