在python中解码json字符串

时间:2012-06-20 19:35:53

标签: python json

我有以下JSON字符串(来自维基百科http://en.wikipedia.org/wiki/JSON

{
        "name":"Product",
        "properties":
        {
                "id":
                {
                        "type":"number",
                        "description":"Product identifier",
                        "required":true
                },
                "name":
                {
                        "type":"string",
                        "description":"Name of the product",
                        "required":true
                },
                "price":
                {
                        "type":"number",
                        "minimum":0,
                        "required":true
                },
                "tags":
                {
                        "type":"array",
                        "items":
                        {
                                "type":"string"
                        }
                },
                "stock":
                {
                        "type":"object",
                        "properties":
                        {
                                "warehouse":
                                {
                                        "type":"number"
                                },
                                "retail":
                                {
                                        "type":"number"
                                }
                        }
                }
        }
}    

我正在尝试使用Python json库解码此字符串。我想访问节点

properties - > stock - > properties - > warehouse

我理解json.loads()函数将json字符串存储为字典。但在这种情况下,属性是我的关键,其下的所有内容都是值。如何访问上述节点。

import json
jsonText=""
file = open("c:/dir/jsondec.json")
for line in file.xreadlines():
    jsonText+=line
data = json.loads(jsonText)
for k,v in data.items():
    print k // shows name and properties
file.close();

由于

1 个答案:

答案 0 :(得分:18)

您可以直接从文件中加载json,如下所示:

 f = open("c:/dir/jsondec.json")
 data = json.load(f)

根据您的输入字符串,data现在是包含其他字典的字典。您可以像这样导航词典:

 node = data['properties']['stock']['properties']['warehouse']
 print str(node)