Json文件将加载为列表而不是字典。使用python

时间:2020-07-10 12:44:46

标签: python json parsing

我正在尝试学习从json文件中获取信息。我的桌面上有250MB大小的json文件。

我是python的新手,我确信尽管Google孜孜不倦地想得到答案,但我仍然缺少一些东西。

我了解我在加载Json文件时,预期的类型是Dict。

import json

with open (r'c:\eseek\limitsdata.json) as f:
   data = json.load(f)

print type(data)

我得到作为输出... 但不确定为什么这不是我在许多教程中看到的字典

我刚刚意识到,这类似于已有的帖子[https://stackoverflow.com/questions/57030807/python-json-loads-returns-list-instead-of-dict]

我想迭代到json,但是当我尝试以下步骤时...不起作用

data_str = json.dumps(data)
print(data_str[0])

我没有第一个嵌套的组,但是我得到了第一个字符串“ [”

我知道我在这里缺少什么。如果有人可以突出显示相同的内容,那就太好了

样本数据。如果模型在主文件中为500,我正在尝试任务详细信息。

[
    {
        "Model": " 500",
        "Task": “71-00-00-200-802 ",

    },
    {
        "Model": " 900",
        "Task": " 71-00-00-200-802",

    }
]

1 个答案:

答案 0 :(得分:0)

如果第一个字符为“ [”,则json文件确实应解析为列表。例如,

a_list = json.loads("[ 'a', 'b', 'c' ] ")   # should give list [a,b,c]
a_dict = json.loads("{ 'data' : ['a', 'b', 'c']} ") # gives a dict

print(type(a_list), type(a_dict)) # should be list, dict
a_dict['data']  # can look up the field in this dict

关于第二个问题:如果您要遍历个项目(上面a_list的第一项是项目“ a”),则将其保留为列表。如果要遍历个字符json.dumps(a_list)的第一个字符是“ [”),则首先将其转换为字符串。

您无需将json转换回字符串即可对其进行迭代,只需执行

for item in a_list:
    print(item)

编辑:尤其是对于您的数据,您可以访问以下字段:

with open (r'c:\eseek\limitsdata.json') as f:
   data = json.load(f)

print( data[0]["Model"] ) # prints '500'
print( data[1]["Task"] ) # prints ' 71-00-00-200-802'