遍历嵌套的 JSON 对象并使用 Python 获取值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/34818782/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
iterate through nested JSON object and get values with Python
提问by Michael Perdue
I am using Python; and I need to iterate through JSON objects and retrieve nested values. A snippet of my data follows:
我正在使用 Python;我需要遍历 JSON 对象并检索嵌套值。我的数据片段如下:
"bills": [
{
"url": "http:\/\/maplight.org\/us-congress\/bill\/110-hr-195\/233677",
"jurisdiction": "us",
"session": "110",
"prefix": "H",
"number": "195",
"measure": "H.R. 195 (110\u003csup\u003eth\u003c\/sup\u003e)",
"topic": "Seniors' Health Care Freedom Act of 2007",
"last_update": "2011-08-29T20:47:44Z",
"organizations": [
{
"organization_id": "22973",
"name": "National Health Federation",
"disposition": "support",
"citation": "The National Health Federation (n.d.). \u003ca href=\"http:\/\/www.thenhf.com\/government_affairs_federal.html\"\u003e\u003ccite\u003e Federal Legislation on Consumer Health\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from The National Health Federation.",
"catcode": "J3000"
},
{
"organization_id": "27059",
"name": "A Christian Perspective on Health Issues",
"disposition": "support",
"citation": "A Christian Perspective on Health Issues (n.d.). \u003ca href=\"http:\/\/www.acpohi.ws\/page1.html\"\u003e\u003ccite\u003ePart E - Conclusion\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from .",
"catcode": "X7000"
},
{
"organization_id": "27351",
"name": "Natural Health Roundtable",
"disposition": "support",
"citation": "Natural Health Roundtable (n.d.). \u003ca href=\"http:\/\/naturalhealthroundtable.com\/reform_agenda\"\u003e\u003ccite\u003eNatural Health Roundtable SUPPORTS the following bills\u003c\/cite\u003e\u003c\/a\u003e. Retrieved August 6, 2008, from Natural Health Roundtable.",
"catcode": "J3000"
}
]
},
I need to go through each object in "bills" and get "session", "prefix", etc. and I also need go through each "organizations" and get "name", "disposition", etc. I have the following code:
我需要通过“账单”中的每个对象并获得“会话”、“前缀”等,我还需要通过每个“组织”并获得“名称”、“处置”等。我有以下代码:
import csv
import json
path = 'E:/Thesis/thesis_get_data'
with open (path + "/" + 'maplightdata110congress.json',"r") as f:
data = json.load(f)
a = data['bills']
b = data['bills'][0]["prefix"]
c = data['bills'][0]["number"]
h = data['bills'][0]['organizations'][0]
e = data['bills'][0]['organizations'][0]['name']
f = data['bills'][0]['organizations'][0]['catcode']
g = data['bills'][0]['organizations'][0]['catcode']
for i in a:
for index in e:
print ('name')
and it returns the string 'name' a bunch of times.
它会多次返回字符串“name”。
Suggestions?
建议?
回答by Michael Perdue
I found the solution on another forum and wanted to share with everyone here in case this comes up again for someone.
我在另一个论坛上找到了解决方案,并希望与这里的所有人分享,以防有人再次遇到这种情况。
import csv
import json
path = 'E:/Thesis/thesis_get_data'
with open (path + "/" + 'maplightdata110congress.json',"r") as f:
data = json.load(f)
for bill in data['bills']:
for organization in bill['organizations']:
print (organization.get('name'))`
回答by Joish
This might help you.
这可能对你有帮助。
def func1(data):
for key,value in data.items():
print (str(key)+'->'+str(value))
if type(value) == type(dict()):
func1(value)
elif type(value) == type(list()):
for val in value:
if type(val) == type(str()):
pass
elif type(val) == type(list()):
pass
else:
func1(val)
func1(data)
All you have to do is to pass the JSON Object as Dictionary to the Function.
您所要做的就是将 JSON 对象作为字典传递给函数。
There is also this python library that might help you with this.You can find this here -> JsonJ
还有这个 python 库可以帮助你解决这个问题。你可以在这里找到这个 -> JsonJ
PEACE BRO!!!
和平兄弟!!!

