Python 2.7
我是python的新手,这是我的第一篇求助文章。
我正在向网上发送一个帖子请求并返回一个json文件。它看起来像这样:
如果我这样做:
打印数据['结果']
我收到所有列出的项目
如果我这样做:
打印数据['结果'] ['recordtype']
我得到“列表索引必须是整数,而不是str”(因为我需要['result'] [0] ['recordtype']?但是这会将它限制为只有第一项)
我可以通过以下方式获得“一些”信息:
print(data ['result'](type是一个列表)
print(data ['result'] [0])(type是dict)
print(data ['result'] [0] ['columns'](类型是字典)
但这只会返回第一项。 ([0])。任何其他尝试都会让我“必须是整数而不是str”。
最终,我想输入项目“id”,并将该项目的所有属性“itemid”,“displayname”,“columns”等作为变量返回。 (“列”将从json文件变为json,但其余部分应保持一致)
问题:
如何根据“id”值循环遍历所有这些项目,并将与该项目关联的所有值作为变量返回?
答案 0 :(得分:0)
而不是json.load()
,请使用json.loads()
This error raised because the data is a unicode/str variable.
答案 1 :(得分: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中的第五天=总的菜鸟)。
答案 2 :(得分: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'])