我想在id
文件中打印属于json
密钥的每个值。我正在使用以下代码打印整个文件:
import json
from pprint import pprint
with open('f:\Docs\testList.json') as data_file:
data = json.load(data_file)
pprint( data )
这是json
{ "clubs": [
{
"location": "Dallas",
"id": "013325K52",
"type": "bar"
},
{
"location": "Dallas",
"id": "763825X56",
"type": "restaurant"
}
] }
它工作正常,但是我无法弄清楚data_file
和data
变量的类型,因此我不知道如何编写for循环来打印内容。我是Python新手,但在伪代码中我会做这样的事情(如果我假设data
是array
对象的dictionary
(或Python列表):
for dictionaryVar in jsonArray
print dictionaryVar["id"]
或
for dictionaryVar in jsonArray
if dictionaryVar containsKey: "id"
print dictionaryVar["id"]
如果有人能给我正确的方法或给予指导,我真的很感激,因为我真的不知道。我检查了json模块的文档,但无法弄清楚它的真正作用和方式。
答案 0 :(得分:2)
data_file
是TextIOWrapper
,即:用于阅读文本的文件对象。你不应该关心它。
data
是dict
。字典映射键值对,但您可能已经知道了。 data
有一个密钥"clubs"
,映射到list
。此列表包含其他词典。
您的伪代码:
for dictionaryVar in jsonArray
print dictionaryVar["id"]
对应于以下Python代码:
for item in data['clubs']:
print item['id']
您的伪代码:
for dictionaryVar in jsonArray
if dictionaryVar containsKey: "id"
print dictionaryVar["id"]
对应于以下Python代码:
for item in data['clubs']:
if 'id' in item:
print item['id']
答案 1 :(得分:1)
这应该是相当简单的,这是一个非常明确的方式(我做得更长,所以它更清楚,你可以更有效地做到这一点)
import json
from pprint import pprint
with open('f:\Docs\testList.json') as data_file:
data = json.load(data_file)
clubs = data['clubs']
for club in clubs:
# Use dict.get() here to default value to None if
# it doesn't exist
club_id = club.get('id', None)
if club_id is not None:
print club_id