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

时间:2018-03-01 14:03:21

标签: python json

Python 2.7

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

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

json Example

如果我这样做:

  

打印数据['结果']

我收到所有列出的项目

如果我这样做:

  

打印数据['结果'] ['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”值循环遍历所有这些项目,并将与该项目关联的所有值作为变量返回?

3 个答案:

答案 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'])