将Python Json转换为dict

将Python Json转换为dict,python,Python,我正在调用一个返回复杂json的API: {"results": [{"attrs": {"name": "par.abd","state": 1.0}, "joins": {}, "meta": {}, "name": "par.abd", "type": Host" }, {"attrs": {"name": "bbc.abd",

我正在调用一个返回复杂json的API:

{"results": [{"attrs": {"name": "par.abd","state": 1.0},
              "joins": {},
              "meta": {},
              "name": "par.abd",
              "type": Host"
             },
             {"attrs": {"name": "bbc.abd","state": 1.0},
              "joins": {},
              "meta": {},
              "name": "bbc.abd",
              "type": "Host"
             }]}
如何提取属性的名称和状态

使用模块:


请注意,我必须在字符串末尾添加一个缺少的
”——我希望它只在您复制到此处时消失。

正如@Aran Fey所建议的,您应该使用模块,该模块将JSON字符串转换为Python命令和列表

import json

json_string = '{"results": [{"attrs": {"name": "par.abd","state": 1.0},"joins": {},"meta": {},"name": "par.abd","type": "Host"},{"attrs": {"name": "bbc.abd","state": 1.0},"joins": {},"meta": {},"name": "bbc.abd","type": "Host"} ]}'
data = json.loads(json_string)
for item in data['results']:
    attrs = item['attrs']
    print(attrs['name'], attrs['state'])

顺便说一句,您的JSON示例中有一个语法错误。在第一次出现“Host”之前缺少一个双引号。

与Thierry的答案基本相同。 json无效时也存在同样的问题

import json
text = '''{
    "results": [
        {
            "attrs": {
                "name": "par.abd",
                "state": 1.0
            },
            "joins": {
            },
            "meta": {
            },
            "name": "par.abd",
            "type": "Host"
        },
        {
            "attrs": {
                "name": "bbc.abd",
                "state": 1.0
            },
            "joins": {
            },
            "meta": {
            },
            "name": "bbc.abd",
            "type": "Host"
        }
    ]
}
'''
payload = json.loads(text)
results = payload['results']
for result in results:
    attrs = result['attrs']
    name = attrs['name']
    state = attrs['state']
    print("name: %s state: %s"%(name,state))

您的输入类型是什么?字符串?您可以使用
import ast;ast.literal\u eval(您的字符串)
将字符串转换为dict。请参见此处:@shotgunner OP说它是JSON,您建议使用
ast
来解析它?您一定是在开玩笑。这显然不是适合此工作的工具。辛格:这是JSON,而不是python如果它是JSON,请使用
JSON
模块来解析它。不是其他任何东西。
import json
text = '''{
    "results": [
        {
            "attrs": {
                "name": "par.abd",
                "state": 1.0
            },
            "joins": {
            },
            "meta": {
            },
            "name": "par.abd",
            "type": "Host"
        },
        {
            "attrs": {
                "name": "bbc.abd",
                "state": 1.0
            },
            "joins": {
            },
            "meta": {
            },
            "name": "bbc.abd",
            "type": "Host"
        }
    ]
}
'''
payload = json.loads(text)
results = payload['results']
for result in results:
    attrs = result['attrs']
    name = attrs['name']
    state = attrs['state']
    print("name: %s state: %s"%(name,state))