簡體   English   中英

如何在Python中循環遍歷JSON

[英]How to loop through JSON in Python

我不知道如何循環經過比1級深的JSON對象。 對象是:

{
  "data":[
    {
      "id":"251228454889939/insights/page_fan_adds_unique/day",
      "name":"page_fan_adds_unique",
      "period":"day",
      "values":[
        {
          "value":9,
          "end_time":"2012-05-29T07:00:00+0000"
        },
        {
          "value":5,
          "end_time":"2012-05-30T07:00:00+0000"
        }
      ],
      "title":"Daily New Likes",
      "description":"Daily The number of new people who have liked your Page (Unique Users)"
    },
    {
      "id":"251228454889939/insights/page_fan_adds/day",
      "name":"page_fan_adds",
      "period":"day",
      "values":[
        {
          "value":9,
          "end_time":"2012-05-29T07:00:00+0000"
        },
        {
          "value":5,
          "end_time":"2012-05-30T07:00:00+0000"
        }
      ],
      "title":"Daily New Likes",
      "description":"Daily The number of new people who have liked your Page (Total Count)"
    }
  ]
}

碼:

def parseJsonData(data):
    output_json = json.loads(data)
    for i in output_json:
        print i
        for k in output_json[i]:
            print k

為什么我不能訪問以下對象: output_json[data][id] 如果嘗試此操作,則會收到錯誤消息:

字符串索引必須是整數

由於您的“數據”鍵實際上是一個對象列表,因此您無法直接通過其“ id”字段訪問這些項目。 您將需要通過列表索引訪問每個項目,例如:
output_json["data"][0]["id"]

現在,如果您想要做的是能夠通過“ id”字段作為關鍵字來索引“ data”的成員,則可以重新格式化數據:

# make "data" a dict {id: item, }, instead of list [item1, item2, ...]
output_json['data'] = dict((item['id'], item) for item in json_data['data'])

print output_json['data']
# {'251228454889939/insights/page_fan_adds_unique/day': ...

print output_json['data']['251228454889939/insights/page_fan_adds_unique/day']
# {'description': 'Daily The number of new p ...

# ways to loop over "data"
for id_, item in output_json['data'].iteritems():
    print id_, item

for item in output_json['data'].itervalues():
    print item

否則,您要做的就是循環“數據”,因為索引和對象之間沒有真正的關聯:

for item in output_json["data"]:
    print item['id']

# 251228454889939/insights/page_fan_adds_unique/day
# 251228454889939/insights/page_fan_adds/day

您粘貼的內容不是有效的JSON。 在“數據”后面有一個不匹配的[。

基於此,我想也許數據不是您認為的那樣。 如果output_json [data]的值是一個列表,那么您將無法訪問output_json[data][id] 相反,您必須執行類似output_json[data][0][id] ,其中[0]訪問列表中的第一項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM