Json解析(for循环)不工作

2024-04-25 15:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解析下面的json文件(数据.json)当我得到一个空响应(数据)时,还尝试处理异常(&A)_空.json)没有任何数据块密钥。你知道吗

check_key&for循环似乎什么也没做,但print命令可以工作。你知道吗

你知道吗--数据.json你知道吗

{
  "response": {
    "numFound": 1,
    "data_block": [
      {
        "Number": "11097",
        "ID": -61000,
        "Version": "18",
        "Sequence": [
          "1",
          "2",
          "3"
        ],
        "Status": [
          "Booked",
          "Canceled",
          "Canceled"
        ],
        "Name": "abc",
        "EmailAddress": "abc@test.com"
      },
      {
        "Number": "00001",
        "ID": -1000,
        "Version": "1",
        "Sequence": [
          "1"
        ],
        "Status": [
          "Booked"
        ],
        "Name": "xyz",
        "EmailAddress": "xyz@test.com"
      }

    ]
  }
}

--数据_空.json你知道吗

{
  "response": {
    "numFound": 0,
    "data_block": []
  }
}

我有下面的代码来解析json(数据.json),只有打印工作,但我不能得到for循环工作。你知道吗

import json
from pprint import pprint
import csv

data = json.load(open('data.json'))
#data = json.load(open('data_empty.json'))
#pprint(data)

output_file_name = 'api_rspns.csv'


#create out file
f = open(output_file_name,'w')
writer = csv.writer(f,delimiter = '~')
headers = ['ORDER_NBR','ORDER_STATUS','EMAIL']
writer.writerow(headers)


print(data['response']['data_block'][0]['Number'])
print(data['response']['data_block'][0]['Status'])
print(data['response']['data_block'][0]['EmailAddress'])

print(data['response']['data_block'][1]['Number'])
print(data['response']['data_block'][1]['Status'])
print(data['response']['data_block'][1]['EmailAddress'])


#check for KeyError ,only parse if ['data_block'] present
try:
    check_key = data['response']['data_block'][0]
except KeyError:
    #continue

    for trip in check_key:
        row = []
        row.append(trip['Number'])
        #row.append(trip["Status"])
        writer.writerow(row)
f.close()

Tags: 数据keyimportjsonnumberfordataresponse
1条回答
网友
1楼 · 发布于 2024-04-25 15:28:07

下面的代码现在可以工作了(还有一个空的响应),谢谢你的帮助

#check for KeyError ,only parse if ['data_block'] present
#try:
#    check_key = data['response']['data_block'][0]
#except KeyError:
    #continue

for trip in data['response']['data_block']:
    row = []
    row.append(trip['Number'])
    row.append(trip["Status"])
    writer.writerow(row)
f.close()

相关问题 更多 >