Json文件使用python作为列表而不是目录获取加载

Json文件使用python作为列表而不是目录获取加载,python,json,parsing,Python,Json,Parsing,我试图学习从json文件中获取信息。250MB大小的json文件在我的桌面上 我是python新手,我确信我错过了一些东西,尽管谷歌不知疲倦地寻找答案 我的理解是,在加载Json文件时,预期的类型是Dict import json with open (r'c:\eseek\limitsdata.json) as f: data = json.load(f) print type(data) 我得到的输出。。。 但我不知道为什么这不是我在很多教程中看到的一个dict 我刚刚意识到这和

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

我是python新手,我确信我错过了一些东西,尽管谷歌不知疲倦地寻找答案


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

import json

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

print type(data)
我得到的输出。。。 但我不知道为什么这不是我在很多教程中看到的一个dict

我刚刚意识到这和已经发布的帖子很相似[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",

    }
]
如果第一个字符是“[”,那么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_列表
的第一项是“
a
”),那么把它作为一个列表保存。如果你想迭代字符
json.dumps(a_列表)
的第一个字符是“
[/code>”),然后首先将其转换为字符串

您不需要将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'
如果第一个字符是“[”,那么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_列表
的第一项是“
a
”),那么把它作为一个列表保存。如果你想迭代字符
json.dumps(a_列表)
的第一个字符是“
[/code>”),然后首先将其转换为字符串

您不需要将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'

你能添加几行c:\eseek\limitsdata.jsonHi@Marco.。我在你请求时添加了更多信息。你文件的根元素似乎是一个列表。为什么你期望结果是一个dict
?@0x5453我正在查看的大多数参考资料都告诉我它将是一个dict“我的理解是,当我加载Json文件时,预期的类型是Dict。"不,预期的类型取决于文件中的实际内容。一个文件包含一个JSON对象,然后将其解码为Python
dict
。您可以添加几行c:\eseek\limitsdata.jsonHi@Marco。我在您请求时添加了更多信息。您文件的根元素似乎是list、 为什么你期望结果是dict
dict
?@0x5453我所查看的大多数参考资料都告诉我,它将是dict“我的理解是,当我加载Json文件时,预期的类型是dict。”不,预期的类型取决于文件中的实际内容。对于一个文件来说,包含单个JSON对象,然后将其解码为Python
dict
是非常常见的。