Python 2.7
我是python的新手,这是我的第一篇求助文章。
我正在向网上发送一个帖子请求并返回一个json文件。它看起来像这样:
如果我做:
打印数据['结果']
我列出了所有项目
如果我做:
打印数据['结果'] ['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”值循环遍历所有这些项,并将与该项关联的所有值作为变量返回?
而不是json.load()
,使用json.loads()
This error raised because the data is a unicode/str variable.
我能够搞清楚一些事情。我拼凑了这个:
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中的第五天=总的菜鸟)。
使用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'])