无法对json中的键内容进行编码

时间:2015-11-15 19:55:48

标签: python json

我想在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_filedata变量的类型,因此我不知道如何编写for循环来打印内容。我是Python新手,但在伪代码中我会做这样的事情(如果我假设dataarray对象的dictionary(或Python列表):

for dictionaryVar in jsonArray

    print dictionaryVar["id"]

 for dictionaryVar in jsonArray

        if dictionaryVar containsKey: "id"

            print dictionaryVar["id"]

如果有人能给我正确的方法或给予指导,我真的很感激,因为我真的不知道。我检查了json模块的文档,但无法弄清楚它的真正作用和方式。

2 个答案:

答案 0 :(得分:2)

data_fileTextIOWrapper,即:用于阅读文本的文件对象。你不应该关心它。

datadict。字典映射键值对,但您可能已经知道了。 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