我知道这可能是一个简单的问题,但是我是一个菜鸟,我花了3天的时间寻找问题的答案,没有运气。
这是我要搜索的JSON结果的示例。我只想在键“ IsFree” = true时打印JSON结果。
[
{
"InventorySliceId": 20946771,
"InventoryDateId": 8050,
"StartTime": "2020-10-16T00:00:00",
"UnitId": 5096,
"UnitTypeId": 4303,
"IsPremium": false,
"IsFree": false,
"IsBlocked": false,
"IsReserved": true,
"IsWalkin": false,
"ReservationId": 2651378,
"FacilityId": 377,
"LockExpiration": "0001-01-01T00:00:00",
"IsLocked": false
},
老实说,我已经尝试了50种不同的代码示例,每次遇到有关数据的错误时,都必须是int等。这是我放在一起的当前代码,它什么都不打印。
import json
import urllib.request
# download raw json object
url =
"https://calirdr.usedirect.com/rdr/rdr/fd/availability
/getbyunit/5096/startdate/2020-10-16/nights/5/true? "
data = urllib.request.urlopen(url).read().decode()
# parse json object
obj = json.loads(data)
for i in obj:
if i['IsFree'] == 'false':
print(json.dumps(obj, indent=1))
答案 0 :(得分:0)
您可以尝试使用请求的内置json响应,将其转换为有效的python字典(或者在您的情况下为字典列表)
import requests
from pprint import pprint
resp = requests.get("https://calirdr.usedirect.com/rdr/rdr/fd/availability/getbyunit/5096/startdate/2020-10-16/nights/5/true?")
for res in resp.json():
if res['IsFree'] is False:
pprint(res)
结果:
[{'InventorySliceId': 20946771,
'InventoryDateId': 8050,
'StartTime': '2020-10-16T00:00:00',
'UnitId': 5096,
'UnitTypeId': 4303,
'IsPremium': False,
'IsFree': False,
'IsBlocked': False,
'IsReserved': True,
'IsWalkin': False,
'ReservationId': 2651378,
'FacilityId': 377,
'LockExpiration': '0001-01-01T00:00:00',
'IsLocked': False},
{'InventorySliceId': 20946968,
'InventoryDateId': 8049,
'StartTime': '2020-10-17T00:00:00',
'UnitId': 5096,
'UnitTypeId': 4303,
'IsPremium': False,
'IsFree': False,
'IsBlocked': False,
'IsReserved': True,
'IsWalkin': False,
'ReservationId': 2651378,
'FacilityId': 377,
'LockExpiration': '0001-01-01T00:00:00',
'IsLocked': False},
{'InventorySliceId': 20947072,
'InventoryDateId': 8052,
'StartTime': '2020-10-18T00:00:00',
'UnitId': 5096,
'UnitTypeId': 4303,
'IsPremium': False,
'IsFree': False,
'IsBlocked': False,
'IsReserved': True,
'IsWalkin': False,
'ReservationId': 2583386,
'FacilityId': 377,
'LockExpiration': '0001-01-01T00:00:00',
'IsLocked': False},
{'InventorySliceId': 20947253,
'InventoryDateId': 8051,
'StartTime': '2020-10-19T00:00:00',
'UnitId': 5096,
'UnitTypeId': 4303,
'IsPremium': False,
'IsFree': False,
'IsBlocked': False,
'IsReserved': True,
'IsWalkin': False,
'ReservationId': 2583386,
'FacilityId': 377,
'LockExpiration': '0001-01-01T00:00:00',
'IsLocked': False},
{'InventorySliceId': 20947341,
'InventoryDateId': 8053,
'StartTime': '2020-10-20T00:00:00',
'UnitId': 5096,
'UnitTypeId': 4303,
'IsPremium': False,
'IsFree': False,
'IsBlocked': False,
'IsReserved': True,
'IsWalkin': False,
'ReservationId': 2527842,
'FacilityId': 377,
'LockExpiration': '0001-01-01T00:00:00',
'IsLocked': False}]
答案 1 :(得分:-1)
为此,您必须更改代码
obj = json.loads(data)
for i in obj: if i['IsFree'] == 'false': print(json.dumps(obj, indent=1))`
到
for i in obj: if i[0].IsFree == 'false':print(json.dumps(obj, indent=1))
应该可以正常工作