📖 Scenario: You are building a simple Flask web app that receives JSON data from a client. The JSON contains user information like name and age.
🎯 Goal: Learn how to access JSON data sent in a POST request in Flask and extract specific fields.
📋 What You'll Learn
Create a Flask app with a route to accept POST requests
Access JSON data from the request
Extract specific fields from the JSON
Return a response using the extracted data
💡 Why This Matters
🌍 Real World
Many web apps receive data from clients in JSON format. Knowing how to access and use this data is essential for building APIs.
💼 Career
Backend developers often work with JSON data in Flask or other frameworks to build REST APIs and handle client requests.
Progress0 / 4 steps
1
Set up Flask app and route
Import Flask and request from flask. Create a Flask app called app. Define a route /user that accepts POST requests.
Flask
Hint
Use @app.route decorator with methods=['POST'] to create the route.
2
Access JSON data from the request
Inside the user function, create a variable called data and assign it the JSON data from the request using request.get_json().
Flask
Hint
Use request.get_json() to get the JSON data sent in the POST request.
3
Extract fields from JSON data
From the data dictionary, extract the values for name and age into variables called name and age.
Flask
Hint
Use dictionary key access like data['name'] to get values.
4
Return a response using extracted data
Return a string response that says "User {name} is {age} years old." using an f-string with the variables name and age.
Flask
Hint
Use an f-string to format the response string with name and age.
Practice
(1/5)
1. In Flask, which method is used to access JSON data sent in a POST request?
easy
A. request.json()
B. request.json_data()
C. request.get_data()
D. request.get_json()
Solution
Step 1: Identify the Flask method for JSON data
Flask provides request.get_json() to parse JSON body data safely.
Step 2: Confirm method usage
This method returns a Python dictionary from the JSON sent in the request.
Final Answer:
request.get_json() -> Option D
Quick Check:
Use request.get_json() to access JSON data [OK]
Hint: Use request.get_json() to get JSON data in Flask [OK]
Common Mistakes:
Using request.json() which does not exist
Using request.get_data() which returns raw bytes
Using request.json_data() which is not a Flask method
2. Which of the following is the correct way to safely access the value of the key 'name' from JSON data in Flask?
easy
A. data['name']
B. data.get('name')
C. data.name
D. data['Name']
Solution
Step 1: Understand dictionary access in Python
JSON data parsed by request.get_json() is a Python dictionary.
Step 2: Choose safe key access method
Using data.get('name') safely returns the value or None if key missing, avoiding errors.
Final Answer:
data.get('name') -> Option B
Quick Check:
Use dict.get() to safely access JSON keys [OK]
Hint: Use data.get('key') to avoid KeyError if missing [OK]
Common Mistakes:
Using data['Name'] with wrong case
Using data.name which is invalid for dict
Using data['name'] without checking key existence
3. Given the Flask route code:
from flask import Flask, request
app = Flask(__name__)
@app.route('/data', methods=['POST'])
def data():
json_data = request.get_json()
return json_data.get('age', 'No age provided')
What will be the response if the JSON sent is {"name": "Alice"}?
medium
A. "No age provided"
B. KeyError
C. None
D. "Alice"
Solution
Step 1: Analyze JSON input and key access
The JSON sent has no 'age' key, only 'name'.
Step 2: Understand get() default behavior
Using json_data.get('age', 'No age provided') returns the default string when 'age' is missing.
Final Answer:
"No age provided" -> Option A
Quick Check:
Missing key returns default value in get() [OK]
Hint: get() returns default if key missing, no error [OK]
Common Mistakes:
Expecting KeyError instead of default value
Confusing returned value with another key
Assuming None is returned without default
4. What is wrong with this Flask code snippet for accessing JSON data?
@app.route('/submit', methods=['POST'])
def submit():
data = request.get_json
return data['email']
medium
A. Missing import of request
B. Using data['email'] without checking if key exists
C. request.get_json is missing parentheses
D. Route method should be GET instead of POST
Solution
Step 1: Check method call syntax
request.get_json is a method and must be called with parentheses: request.get_json().
Step 2: Identify impact of missing parentheses
Without parentheses, data is a method reference, not the JSON dict, causing errors on key access.
Final Answer:
request.get_json is missing parentheses -> Option C
Quick Check:
Always call get_json() with () to get JSON data [OK]
Hint: Call get_json() with parentheses to get data [OK]
Common Mistakes:
Forgetting parentheses after get_json
Not checking if key exists before access
Assuming GET method for JSON POST route
5. You want to safely extract the 'username' and 'email' from JSON data in a Flask route, providing default values if keys are missing. Which code snippet correctly does this?
hard
A. data = request.get_json()
username = data.get('username', 'guest')
email = data.get('email', 'noemail@example.com')
B. data = request.get_json()
username = data['username']
email = data['email']
C. data = request.get_json
username = data.get('username', 'guest')
email = data.get('email', 'noemail@example.com')
D. data = request.get_json()
username = data.get('username') or 'guest'
email = data['email']
Solution
Step 1: Use get_json() correctly
Call request.get_json() with parentheses to get JSON data as a dict.
Step 2: Use dict.get() with defaults for safe access
Use data.get('key', default) to provide fallback values if keys are missing.
Final Answer:
data = request.get_json()
username = data.get('username', 'guest')
email = data.get('email', 'noemail@example.com') -> Option A
Quick Check:
Use get_json() and dict.get() with defaults for safe JSON access [OK]
Hint: Use data.get('key', default) after get_json() call [OK]
Common Mistakes:
Not calling get_json() as a method
Accessing keys directly without defaults
Mixing method call and attribute access
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.