如何检查Python HTTP请求中存在哪些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

我正在用Python编写一个脚本,它将使用我在网上找到的API生成一个笑话。(). 然而,笑话中的一些设置/问题部分使用JSON数据,这些数据在“设置”和“笑话”之间有所不同。我想看看我是否能写一个脚本来检查响应是哪一个。我这里有我的脚本:

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'