如何检查Python HTTP请求中存在哪些JSON数据?
我正在用Python编写一个脚本,它将使用我在网上找到的API生成一个笑话。(). 然而,笑话中的一些设置/问题部分使用JSON数据,这些数据在“设置”和“笑话”之间有所不同。我想看看我是否能写一个脚本来检查响应是哪一个。我这里有我的脚本:如何检查Python HTTP请求中存在哪些JSON数据?,python,json,python-requests,Python,Json,Python Requests,我正在用Python编写一个脚本,它将使用我在网上找到的API生成一个笑话。(). 然而,笑话中的一些设置/问题部分使用JSON数据,这些数据在“设置”和“笑话”之间有所不同。我想看看我是否能写一个脚本来检查响应是哪一个。我这里有我的脚本: import requests import json def getJoke(): response = requests.get("https://v2.jokeapi.dev/joke/Any") print(respon
import requests
import json
def getJoke():
response = requests.get("https://v2.jokeapi.dev/joke/Any")
print(response.text)
json_data = json.loads(response.text)
joke = json_data['joke'] + json_data['setup'] + " " + json_data['delivery']
print(joke)
getJoke()
一些答复是:
"error": false,
"category": "Christmas",
"type": "twopart",
"setup": "How will Christmas dinner be different after Brexit?",
"delivery": "No Brussels!",
及
有没有办法检查响应得到的数据名?要检查所有数据字段名:
json_data = json.loads(response.text)
fields = json_data.keys()
"joke" in fields
"setup" in fields
然后检查joke
或setup
是否在字段名中:
json_data = json.loads(response.text)
fields = json_data.keys()
"joke" in fields
"setup" in fields
有两种类型的笑话。单衬套和多部件衬套 单线笑话:
{
"error": false,
"category": "Pun",
"type": "single",
"joke": "To whoever stole my copy of Microsoft Office, I will find you. You have my Word!",
"flags": {
"nsfw": false,
"religious": false,
"political": false,
"racist": false,
"sexist": false,
"explicit": false
},
"id": 191,
"safe": true,
"lang": "en"
}
多部分笑话:
{
"error": false,
"category": "Programming",
"type": "twopart",
"setup": "Why do programmers prefer using the dark mode?",
"delivery": "Because light attracts bugs.",
"flags": {
"nsfw": false,
"religious": false,
"political": false,
"racist": false,
"sexist": false,
"explicit": false
},
"id": 232,
"safe": true,
"lang": "en"
}
在查询其他json元素之前,需要检查笑话类型
import requests
import json
def getJoke():
response = requests.get("https://v2.jokeapi.dev/joke/Any")
json_data = json.loads(response.text)
joke_type = json_data['type']
if joke_type == 'single':
joke = json_data['joke']
elif joke_type == 'twopart':
joke_setup = json_data['setup']
joke_delivery = json_data['delivery']
print (f'Joke Setup: {joke_setup} \nJoke Delivery: {joke_delivery}')
# output
Joke Setup: Why does Dr. Pepper come in a bottle?
Joke Delivery: His wife is dead.
getJoke()
我现在在使用``fields=json_data.keys()时遇到一个新错误,如果字段中的“setup”为:joke=json_data['setup']+''+json_data['delivery']否则:joke=json_data['joke']+''+json_data['delivery']keyror:'delivery'