I’m working on a script with Python that will generate a joke using an API I found online. (https://sv443.net/jokeapi/v2/). However, some of the setup/question parts of the joke use JSON Data, which varies between being ‘setup’ and ‘joke’. I’m looking to see if I can write a script that will check which one the response is pulling. I have my script here:
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()
Some of the responses are
    "error": false,
    "category": "Christmas",
    "type": "twopart",
    "setup": "How will Christmas dinner be different after Brexit?",
    "delivery": "No Brussels!",
and
    "error": false,
    "category": "Programming",
    "type": "twopart",
    "joke": "Why is Linux safe?",
    "delivery": "Hackers peak through Windows only.",
Is there a way to check which data-name the response is getting?
Advertisement
Answer
There are two types of jokes. Single liners and multiple part ones.
Single line joke:
{
    "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"
}
Multiple part joke:
{
    "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"
}
You need to check the joke type prior to querying the other json elements.
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()