Python将json文件解析成可用的东西

问题描述 投票:0回答:3

Python 2.7

我是python的新手,这是我的第一篇求助文章。

我正在向网上发送一个帖子请求并返回一个json文件。它看起来像这样:

json Example

如果我做:

打印数据['结果']

我列出了所有项目

如果我做:

打印数据['结果'] ['recordtype']

我得到“列表索引必须是整数,而不是str”(因为我需要['result'] [0] ['recordtype']?但这会将它限制为只有第一项)

我可以获得“一些”信息:

print(data ['result'](类型是一个列表)

print(data ['result'] [0])(type是dict)

print(data ['result'] [0] ['columns'](类型是一个字典)

但这只返回第一项。 ([0])。任何其他尝试都会让我“必须是整数而不是str”。

最后,我想输入项目“id”并将该项目的所有属性“itemid”,“displayname”,“columns”等作为变量返回。 (“列”将从json文件变为json,但其余部分应保持一致)

问题:

如何根据“id”值循环遍历所有这些项,并将与该项关联的所有值作为变量返回?

python json
3个回答
0
投票

而不是json.load(),使用json.loads()

This error raised because the data is a unicode/str variable.


0
投票

我能够搞清楚一些事情。我拼凑了这个:

y = "user input id variable"
x = y

for i in data['result']: 
if i['id'] == x:
    NL_id = i['id']
    NL_Rc = i['recordtype']
    NL_Itid = i['columns']['itemid']
    break`

这将以我需要的方式返回json dict中我需要的数据。也许这会帮助像我这样的人。 (python中的第五天=总的菜鸟)。


0
投票

使用json python库应该可行。 json中的每个元素都是字典。对于每个字典,值可以是字符串,字典(等)或数组(元素集合)。要使用密钥k访问字典的值,请执行d['k']。如果其值是数组,则指定索引:d['k'][0]

作为示例,请使用以下json文件:

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

并使用此代码menuitem是一个数组:

import json

f = open("test.json")
a = f.read()
jj = json.loads(a)
print(a)
print(type(jj))
print(type(jj['menu']['popup']['menuitem']))
for el in jj['menu']['popup']['menuitem']:
    print(el['value'])
© www.soinside.com 2019 - 2024. All rights reserved.