📖 Scenario: You are building a simple web API using Flask. This API will return user information in JSON format when a client requests it.
🎯 Goal: Create a Flask app that returns a JSON response with user details formatted correctly.
📋 What You'll Learn
Create a dictionary with user data
Set a configuration variable for the HTTP status code
Use Flask's jsonify to format the response
Return the JSON response with the correct status code
💡 Why This Matters
🌍 Real World
APIs often send data in JSON format to web or mobile apps. Knowing how to format JSON responses in Flask is essential for backend development.
💼 Career
Backend developers frequently build REST APIs using Flask or similar frameworks. This skill is fundamental for creating services that communicate with frontend applications.
Progress0 / 4 steps
1
Create user data dictionary
Create a dictionary called user with these exact entries: 'name': 'Alice', 'age': 30, and 'city': 'New York'.
Flask
Hint
Use curly braces to create a dictionary and separate keys and values with colons.
2
Set HTTP status code variable
Create a variable called status_code and set it to 200 to represent a successful HTTP response.
Flask
Hint
Just assign the number 200 to the variable status_code.
3
Import Flask and create app
Import Flask and jsonify from flask. Then create a Flask app instance called app.
Flask
Hint
Use from flask import Flask, jsonify and then app = Flask(__name__).
4
Create route to return JSON response
Create a route /user using @app.route('/user'). Define a function called get_user that returns jsonify(user) and the status_code variable.
Flask
Hint
Use the @app.route decorator and return jsonify(user), status_code.
Practice
(1/5)
1. What is the main purpose of using jsonify() in a Flask app?
easy
A. To connect to a database
B. To create HTML pages dynamically
C. To handle user authentication
D. To format Python data as a JSON response easily
Solution
Step 1: Understand the role of jsonify()
The jsonify() function converts Python data structures into JSON format for HTTP responses.
Step 2: Identify the correct purpose
It is not used for HTML, database, or authentication tasks but specifically for JSON response formatting.
Final Answer:
To format Python data as a JSON response easily -> Option D
Quick Check:
jsonify() formats data as JSON [OK]
Hint: jsonify() turns Python data into JSON response fast [OK]
Common Mistakes:
Thinking jsonify() creates HTML pages
Confusing jsonify() with database functions
Assuming jsonify() handles user login
2. Which of the following is the correct way to return a JSON response in Flask?
easy
A. return jsonify({'key': 'value'})
B. return json.dumps({'key': 'value'})
C. return render_template('data.json')
D. return Response({'key': 'value'})
Solution
Step 1: Review Flask JSON response syntax
Flask provides jsonify() to return JSON responses with correct headers automatically.
Step 2: Compare options
return json.dumps({'key': 'value'}) returns a string without proper headers, C returns a template, D uses Response incorrectly.
Final Answer:
return jsonify({'key': 'value'}) -> Option A
Quick Check:
Use jsonify() to return JSON response [OK]
Hint: Use jsonify() to return JSON with correct headers [OK]
Common Mistakes:
Using json.dumps() without setting content-type
Returning templates instead of JSON
Using Response without JSON serialization
3. What will be the output of this Flask route?
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/data')
def data():
info = {'name': 'Alice', 'age': 30}
return jsonify(info)
medium
A. A Python dictionary printed as string
B. An HTML page showing the dictionary
C. A JSON response: {"name": "Alice", "age": 30}
D. A server error due to missing return type
Solution
Step 1: Analyze the route function
The function returns jsonify(info), which sends a JSON response with the dictionary data.
Step 2: Understand jsonify output
jsonify converts the dict to JSON string and sets content-type to application/json.
Final Answer:
A JSON response: {"name": "Alice", "age": 30} -> Option C
Quick Check:
jsonify returns JSON response [OK]
Hint: jsonify() returns JSON string with headers, not plain dict [OK]
Common Mistakes:
Expecting Python dict printed as string
Thinking it returns HTML
Assuming server error without return type
4. Identify the error in this Flask code snippet:
from flask import Flask, jsonify
import json
app = Flask(__name__)
@app.route('/info')
def info():
data = {'status': 'ok'}
return json.dumps(data)
medium
A. Route decorator syntax is wrong
B. json.dumps() returns a string without proper response headers
C. Flask app is not created correctly
D. jsonify() is missing import
Solution
Step 1: Check the return statement
The code returns json.dumps(data), which is a JSON string but lacks HTTP headers for JSON content.
Step 2: Understand Flask JSON response best practice
Using jsonify() sets content-type headers correctly; returning json.dumps() alone can cause client issues.
Final Answer:
json.dumps() returns a string without proper response headers -> Option B
Quick Check:
json.dumps() lacks JSON headers [OK]
Hint: Use jsonify(), not json.dumps(), to send JSON response [OK]
Common Mistakes:
Returning json.dumps() string without headers
Forgetting to import jsonify
Misusing route decorator
5. You want to return a JSON response with a custom status code 201 and a message. Which is the correct way to do this in Flask?
hard
A. return jsonify({'message': 'Created'}), 201
B. return Response(json.dumps({'message': 'Created'}), status=201)
C. return jsonify({'message': 'Created', 'status': 201})
D. return {'message': 'Created'}, 201
Solution
Step 1: Understand how to set status code with jsonify
Flask allows returning a tuple with (response, status_code) where response can be jsonify output.
Step 2: Evaluate options
return jsonify({'message': 'Created'}), 201 correctly returns jsonify with status 201. return Response(json.dumps({'message': 'Created'}), status=201) misses content-type headers. return jsonify({'message': 'Created', 'status': 201}) puts status inside JSON data, not HTTP status. return {'message': 'Created'}, 201 returns dict without jsonify.
Final Answer:
return jsonify({'message': 'Created'}), 201 -> Option A
Quick Check:
Use jsonify() with status code tuple [OK]
Hint: Return (jsonify(data), status_code) to set HTTP status [OK]
Common Mistakes:
Putting status code inside JSON data
Using Response without headers
Returning dict without jsonify
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.