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()