2016-06-16 6 views
1

私はforループを複数のレベルで実行しています。ループの各レベルはjsonを返します.jsonは階層に配置する必要があります。私たちは、forループをもとに、ネストされた階層と、最終的なJSONを作成する必要がPython辞書を使用して入れ子になったjsonを作成しました

Traceback (most recent call last): 
    File "Test.py", line 80, in <module> 
    output[aid][bid] = bjson 
TypeError: 'unicode' object does not support item assignment 

以下のよう

output = {} 
for a in alist: 
    aid, ajson = hit_api(url1) 
    output[aid] = ajson 
    for b in blist: 
    bid, bjson = hit_api(url2) 
    output[aid][bid] = bjson -- this is where we are getting error 

エラーです。それはajsonように思える

aid:ajson 
    | 
    ---bid:bjson 
     | 
     --- cid:cjson 
      | 
      etc. 

答えて

1

よう なものは文字列です。これを解析したいかもしれません。あなたは、Pythonの標準ライブラリjsonを使用してjson.loads(ajson)

例呼び出すことができます:ええ... bjsonを入れ子にするために、..私が望むすべてjsonsは文字列です..しかし、私はjsonsが同じ階層になりたいいけない

import json 
output = {} 
for a in alist: 
    aid, ajson = hit_api(url1) 
    output[aid] = json.loads(ajson) 
    for b in blist: 
    bid, bjson = hit_api(url2) 
    output[aid][bid] = json.loads(bjson) 
+0

をアジソンの下で。 – srinath

+0

私は答えを更新しました:) –

+0

しかし、まだエラーが発生します。 出力[aid] = json.load(str(ajson)) ファイル "/usr/lib/python2.7/json/__init__ .py "、行286、ロード中 リターンロード(fp.read()、 )AttributeError: 'str'オブジェクトに属性 'read'がありません – srinath

関連する問題