【发布时间】:2020-10-12 15:13:21
【问题描述】:
我知道这可能是一个简单的问题,但我是一个菜鸟,我花了 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))
【问题讨论】:
-
如果您修复了最后一个
for i in obj:块的缩进,并且将== 'false'更改为== False,那么您的代码非常好。json.loads()将 json 字符串中的"IsFree": "false"转换为 python dict 中的["IsFree"] = False,所以你只需要做if i['IsFree'] == False:,或者更简洁,if not i['IsFree']:
标签: json python-3.x urllib