0

このjsonデータから「b」タグを抜き出したい。しかし、それは NameError になります。このコードを改善する方法を教えてください。

json_data = {"one": null,
         "two": {"a": "1", "b": null},
         "three": "3"
         }

if __name__=="__main__":
    new_data = json.decode(json_data)
    json = json.loads(new_data)
    print json["two"]["b"]
4

2 に答える 2

0

Python 辞書を存在しない関数に渡そうとしているため、コードが機能しませんjson.decode()。以下は、手動で文字列に変換し、それjson_dataを に直接渡すことでこれらの問題に対処し、遭遇した を に変換します。json.loads()nullNone

import json

json_data = '''{"one": null,
                "two": {"a": "1", "b": null},
                "three": "3"
               }'''

if __name__=="__main__":
    json = json.loads(json_data)
    print json["two"]["b"]

出力:

None
于 2013-02-26T20:31:30.180 に答える
0

ここでの問題は、JSON を含む文字列ではなく、オブジェクトをデコードしようとしていることです。これは、Python がデータをリテラルとして解析していることを意味し、その結果、Python には当然存在しないdict値を見つけようとします。null代わりに、文字列を作成します。

json_data = '''{"one": null,
         "two": {"a": "1", "b": null},
         "three": "3"
         }'''

ここでは、三重引用符 ( ''') を使用して複数行の文字列を定義しています。

これは期待どおりに動作するはずです。あなたは単に例を挙げているだけだと思いますが、これはこのコンテキストではかなり無意味であり、Python データ構造を直接定義するだけで、JSON をまったく使用しない方がよいことに注意してください。

于 2013-02-26T20:14:23.957 に答える