JSON数据-在Python中,如何仅打印Key=Available的结果

JSON数据-在Python中,如何仅打印Key=Available的结果,json,python-3.x,Json,Python 3.x,首先,这是我的第一篇文章,我是一个试图学习一点Python的noob,因为我想查看#可用的营地,并且更愿意编写自己的程序,然后使用一些付费网站。下面是我的代码#,它打印了我在下面显示的结果。我只想打印“可用性”:如果它显示 “可用”不是“保留” 提前谢谢你 import json import urllib.request import time # download raw json object url = "https://www.recreation.gov/api/

首先,这是我的第一篇文章,我是一个试图学习一点Python的noob,因为我想查看#可用的营地,并且更愿意编写自己的程序,然后使用一些付费网站。下面是我的代码#,它打印了我在下面显示的结果。我只想打印“可用性”:如果它显示 “可用”不是“保留”

提前谢谢你

import json
import urllib.request
import time
    
# download raw json object
url = "https://www.recreation.gov/api/camps/availability/campground/233116/month?start_date=2020-09-01T00%3A00%3A00.000Z"
data = urllib.request.urlopen(url).read().decode()
    
# parse json object
obj = json.loads(data)

print(json.dumps(obj, indent=1))




{
 "campsites": {
  "90041": {
   "availabilities": {
    "2020-09-01T00:00:00Z": "Reserved",
    "2020-09-02T00:00:00Z": "Reserved",
    "2020-09-03T00:00:00Z": "Reserved",
    "2020-09-04T00:00:00Z": "Reserved",
    "2020-09-05T00:00:00Z": "Reserved",
    "2020-09-06T00:00:00Z": "Reserved",
    "2020-09-07T00:00:00Z": "Reserved",
    "2020-09-08T00:00:00Z": "Reserved",
    "2020-09-09T00:00:00Z": "Reserved",
    "2020-09-10T00:00:00Z": "Reserved",
    "2020-09-11T00:00:00Z": "Reserved",
    "2020-09-12T00:00:00Z": "Reserved",
    "2020-09-13T00:00:00Z": "Reserved",
    "2020-09-14T00:00:00Z": "Reserved",
    "2020-09-15T00:00:00Z": "Reserved",
    "2020-09-16T00:00:00Z": "Reserved",
    "2020-09-17T00:00:00Z": "Reserved",
    "2020-09-18T00:00:00Z": "Reserved",
    "2020-09-19T00:00:00Z": "Reserved",
    "2020-09-20T00:00:00Z": "Reserved",
    "2020-09-21T00:00:00Z": "Reserved",
    "2020-09-22T00:00:00Z": "Reserved",
    "2020-09-23T00:00:00Z": "Reserved",
    "2020-09-24T00:00:00Z": "Reserved",
    "2020-09-25T00:00:00Z": "Reserved",
    "2020-09-26T00:00:00Z": "Reserved",
    "2020-09-27T00:00:00Z": "Reserved",
    "2020-09-28T00:00:00Z": "Reserved",
    "2020-09-29T00:00:00Z": "Reserved",
    "2020-09-30T00:00:00Z": "Reserved"
   },
   "campsite_id": "90041",
   "campsite_reserve_type": "Site-Specific",
   "campsite_type": "STANDARD NONELECTRIC",
   "capacity_rating": "",
   "loop": "KIRK CREEK CAMPGROUND",
   "max_num_people": 8,
   "min_num_people": 1,
   "quantities": null,
   "site": "030",
   "type_of_use": "Overnight"
  },

在这里,你有几种可能性。我认为一个简单的解决方案是对数据进行后处理(即
obj
),只需删除
“不可用”的条目。以下是一个解决方案,它为您提供相同的数据,只过滤可用性:

从复制导入deepcopy
结果=深度复制(obj)
对于营地,obj[“营地”]中的信息。项目()
对于日,信息[“可用性”]中的可用性。项()
如果可用!=“可用”:
del结果[“营地”][营地][“可用性”][天]
打印(json.dumps(结果,缩进=1))
如果您需要其他数据结构,我希望您知道如何做到这一点

迭代对象时的修改可能会导致一些问题。这就是为什么我创建了您的
obj
的深度副本(没有引用)。当然,您必须转储
结果,而不是
obj


但是,对于您给定的数据,我再也找不到可用的日期。

这里有几种可能性。我认为一个简单的解决方案是对数据进行后处理(即
obj
),只需删除
“不可用”的条目。以下是一个解决方案,它为您提供相同的数据,只过滤可用性:

从复制导入deepcopy
结果=深度复制(obj)
对于营地,obj[“营地”]中的信息。项目()
对于日,信息[“可用性”]中的可用性。项()
如果可用!=“可用”:
del结果[“营地”][营地][“可用性”][天]
打印(json.dumps(结果,缩进=1))
如果您需要其他数据结构,我希望您知道如何做到这一点

迭代对象时的修改可能会导致一些问题。这就是为什么我创建了您的
obj
的深度副本(没有引用)。当然,您必须转储
结果,而不是
obj


但是,对于您给定的数据,我再也找不到可用的日期。

欢迎使用StackOverflow!请拿下,阅读,并提供。“为我实现此功能”是本网站的主题。你必须做一个诚实的尝试,然后问一个关于你的算法或技术的具体问题。欢迎来到StackOverflow!请拿下,阅读,并提供。“为我实现此功能”是本网站的主题。你必须做出诚实的尝试,然后问一个关于你的算法或技术的具体问题。非常感谢你的快速回复。不幸的是,它看起来像是显示没有数据的可用性,所以我无法判断该网站是否可用。有什么想法吗?谢谢这里是这段代码的结果。{“露营地”:{“90041”:{“可用性”:{},“露营地id”:“90041”,“露营地保留地类型”:“特定地点”,“露营地类型”:“标准非电气”,“容量额定值”:“抱歉..我还需要日期,否则我不知道该地点的可用日期。”2020-09-01T00:00:00Z:“保留”,需要将此打印到保留可用的位置。抱歉,我不明白。如果可用性为空,则没有剩余的可用日期。因为所有不“可用”的日期都会被过滤掉。因此,如果看到空的“可用性”,则可以说没有可用日期.打印出obj,你会发现没有可用日期。这就是我理解你问题的方式:我只想打印“可用性”:如果它显示“可用”而不是“保留”。我希望看到所有打印的信息,包括可用性显示中的日期和站点信息。很抱歉造成混乱。非常感谢您的帮助。我花了大量时间搜索谷歌,无法找到此问题的示例。非常感谢您的快速回复。不幸的是,它看起来像结果在没有数据的情况下显示可用性,因此我无法判断该场地是否可用。有什么想法吗?谢谢您这是此代码的结果。{“营地”:{“90041”:{“可用性”:{},“营地id”:“90041”,“营地储备类型”:“特定场地”,“营地类型”:“标准非电气”,“容量等级”:,抱歉..我还需要日期,否则我不知道站点的可用日期。“2020-09-01T00:00:00Z”:“保留”,需要在保留可用的位置打印此内容。抱歉,我不明白。如果可用性为空,则没有可用日期。因为所有日期都不“可用”所以你可以说,如果你看到空的“可用性”,没有可用的日期。打印出obj,你就会看到没有可用的日期。这就是我理解你问题的方式:我只想打印“可用性”:如果它显示“可用”而不是“保留”。我希望看到所有信息,包括可用性显示中的日期和站点信息。抱歉造成混淆。非常感谢您的帮助。我花了大量时间搜索google,但找不到此问题的示例。