Bird
Raised Fist0
Flaskframework~20 mins

Accessing JSON data in Flask - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
JSON Data Mastery in Flask
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output of this Flask route when sending JSON data?
Consider this Flask route that receives JSON data and returns a value from it. What will be the response if the client sends {"name": "Alice", "age": 30} as JSON?
Flask
from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/user', methods=['POST'])
def user():
    data = request.get_json()
    return jsonify({'greeting': f"Hello, {data['name']}!"})
A{"greeting": "Hello, 30!"}
B{"greeting": "Hello, None!"}
CKeyError exception
D{"greeting": "Hello, Alice!"}
Attempts:
2 left
💡 Hint
Look at how the JSON data is accessed by key 'name' in the dictionary.
📝 Syntax
intermediate
1:30remaining
Which option correctly accesses nested JSON data in Flask?
Given JSON data {"user": {"id": 5, "info": {"email": "a@example.com"}}}, which code correctly extracts the email inside a Flask route?
Flask
data = request.get_json()
email = ???
Adata['user']['info']['email']
Bdata['user']['email']
Cdata['info']['email']
Ddata['email']
Attempts:
2 left
💡 Hint
Follow the nested keys step by step from the JSON structure.
🔧 Debug
advanced
2:00remaining
Why does this Flask route raise an error when accessing JSON data?
This route tries to get a JSON key but raises an error. What is the cause?
Flask
from flask import Flask, request
app = Flask(__name__)

@app.route('/data', methods=['POST'])
def data():
    data = request.json
    return data['key']
AKeyError because 'key' does not exist in data
Brequest.json is None if Content-Type is not application/json
CSyntaxError due to missing parentheses
DTypeError because data is a string
Attempts:
2 left
💡 Hint
Check the request headers and how Flask parses JSON automatically.
❓ state_output
advanced
2:00remaining
What is the output of this Flask route when JSON data is missing a key?
Given this route, what happens if the client sends JSON {"name": "Bob"} but the code tries to access 'age'?
Flask
from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/info', methods=['POST'])
def info():
    data = request.get_json()
    age = data['age']
    return jsonify({'age': age})
A{"age": 0}
B{"age": null}
CKeyError exception
D{"age": ""}
Attempts:
2 left
💡 Hint
What happens when you access a dictionary key that does not exist?
🧠 Conceptual
expert
2:30remaining
Which option best explains how Flask handles JSON data in requests?
When a Flask route uses request.get_json(), what does Flask do internally to provide the JSON data?
AFlask reads the request body, checks Content-Type header, and parses JSON into a Python dict
BFlask requires manual parsing of JSON using json.loads(request.data)
CFlask uses the URL parameters to build JSON data
DFlask automatically converts all request data into JSON regardless of Content-Type
Attempts:
2 left
💡 Hint
Think about how Flask knows when to parse JSON and what it returns.

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

  1. Step 1: Identify the Flask method for JSON data

    Flask provides request.get_json() to parse JSON body data safely.
  2. Step 2: Confirm method usage

    This method returns a Python dictionary from the JSON sent in the request.
  3. Final Answer:

    request.get_json() -> Option D
  4. 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

  1. Step 1: Understand dictionary access in Python

    JSON data parsed by request.get_json() is a Python dictionary.
  2. Step 2: Choose safe key access method

    Using data.get('name') safely returns the value or None if key missing, avoiding errors.
  3. Final Answer:

    data.get('name') -> Option B
  4. 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

  1. Step 1: Analyze JSON input and key access

    The JSON sent has no 'age' key, only 'name'.
  2. Step 2: Understand get() default behavior

    Using json_data.get('age', 'No age provided') returns the default string when 'age' is missing.
  3. Final Answer:

    "No age provided" -> Option A
  4. 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

  1. Step 1: Check method call syntax

    request.get_json is a method and must be called with parentheses: request.get_json().
  2. Step 2: Identify impact of missing parentheses

    Without parentheses, data is a method reference, not the JSON dict, causing errors on key access.
  3. Final Answer:

    request.get_json is missing parentheses -> Option C
  4. 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

  1. Step 1: Use get_json() correctly

    Call request.get_json() with parentheses to get JSON data as a dict.
  2. Step 2: Use dict.get() with defaults for safe access

    Use data.get('key', default) to provide fallback values if keys are missing.
  3. Final Answer:

    data = request.get_json() username = data.get('username', 'guest') email = data.get('email', 'noemail@example.com') -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard