json.loads列出不是dict

时间:2018-02-06 21:45:45

标签: python json

我遇到了Google无法为我解决的问题。

我了解json.loads(var.text)将返回dict,在某些情况下,它会归我所有。

假设数据如下:

{
    "PROJECT_ID": 3351040882,
    "common.ALLTYPES_DESCRIPTION": "",
    "servermain.PROJECT_TITLE": "",

}

此数据将加载为dict

以下是作为列表加载的数据示例。

[  
    {
        "PROJECT_ID": 3351040882,
        "common.ALLTYPES_NAME": "AdvancedTags",
        "common.ALLTYPES_DESCRIPTION": "",
        "servermain.ALIAS_MAPPED_TO": "_AdvancedTags",
        "servermain.ALIAS_SCAN_RATE_MILLISECONDS": 0
    },
    {
        "PROJECT_ID": 3351040882,
        "common.ALLTYPES_NAME": "Channel1__CommunicationSerialization",
        "common.ALLTYPES_DESCRIPTION": "",
        "servermain.ALIAS_MAPPED_TO": "Channel1._CommunicationSerialization",
        "servermain.ALIAS_SCAN_RATE_MILLISECONDS": 0
    },
]

根据我的研究,我了解第二个输出是list dict。是否有一些简单的函数可以将list加载到dict

2 个答案:

答案 0 :(得分:1)

看起来你在列表中只有一个字典。然后只需通过索引访问它:

json.loads(var.text)[0]

答案 1 :(得分:0)

我找到了修复,我确信有更好的方法,但这就是我做的。首先,我建立了一个列表和列表。然后我建立了一个字典并以这种方式加载了字典。

# List of lists and dicts
serverintlist = [project_info, aliases_info, channels_info]
serverintdict = {}
serverintdict['project'] = serverintlist[0]
serverintdict['alias'] = serverintlist[1]
serverintdict['channel'] = serverintlist[2]
print(type(project_info))  # <class 'dict'>
print(type(aliases_info))  # <class 'list'>
print(type(channels_info)) # <class 'list'>
print(type(serverintdict)) # <class 'dict'>