Bird
Raised Fist0
Djangoframework~20 mins

Returning JSON with JsonResponse in Django - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
JsonResponse Mastery
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 Django view using JsonResponse?
Consider this Django view function. What JSON response will the client receive?
Django
from django.http import JsonResponse

def sample_view(request):
    data = {'name': 'Alice', 'age': 30}
    return JsonResponse(data)
A{"name": "Alice", "age": 30}
B"{'name': 'Alice', 'age': 30}"
C{"name": "Alice", "age": "30"}
D{"name": "Alice"}
Attempts:
2 left
💡 Hint
JsonResponse converts the dictionary to JSON with correct types.
📝 Syntax
intermediate
2:00remaining
Which option will cause a TypeError when returning JsonResponse?
Which of these Django view return statements will raise a TypeError?
Django
from django.http import JsonResponse

def view(request):
    # return statement here
Areturn JsonResponse('hello world')
Breturn JsonResponse({'fruits': ['apple', 'banana']})
Creturn JsonResponse({'count': 5})
Dreturn JsonResponse({'valid': True})
Attempts:
2 left
💡 Hint
JsonResponse expects a dictionary or list, not a plain string.
❓ state_output
advanced
2:00remaining
What is the Content-Type header of this JsonResponse?
Given this Django view, what is the Content-Type header sent in the HTTP response?
Django
from django.http import JsonResponse

def view(request):
    return JsonResponse({'status': 'ok'})
Atext/html
Bapplication/json
Capplication/javascript
Dtext/plain
Attempts:
2 left
💡 Hint
JsonResponse sets the content type for JSON data.
🔧 Debug
advanced
2:00remaining
Why does this JsonResponse return an empty JSON object?
This Django view returns an empty JSON object {} instead of the expected data. Why?
Django
from django.http import JsonResponse

def view(request):
    data = {'count': 10}
    return JsonResponse(data, safe=False)
Asafe=False allows non-dict data, but data is a dict, so it returns empty
Bsafe=False disables validation, but data is dict so it returns correctly
Csafe=False is required only for non-dict data; here it has no effect
Dsafe=False causes JsonResponse to ignore data and return empty object
Attempts:
2 left
💡 Hint
safe=False is for allowing non-dict data like lists.
🧠 Conceptual
expert
3:00remaining
Which option correctly returns a JSON list with JsonResponse?
You want to return a JSON list ['red', 'green', 'blue'] from a Django view using JsonResponse. Which return statement is correct?
Django
from django.http import JsonResponse

def colors_view(request):
    colors = ['red', 'green', 'blue']
    # return statement here
Areturn JsonResponse(colors)
Breturn JsonResponse(colors, safe=True)
Creturn JsonResponse({'colors': colors})
Dreturn JsonResponse(colors, safe=False)
Attempts:
2 left
💡 Hint
JsonResponse requires safe=False to return non-dict data like lists.

Practice

(1/5)
1. What is the main purpose of Django's JsonResponse class?
easy
A. To send JSON data as an HTTP response easily and safely
B. To render HTML templates with JSON data
C. To parse JSON data from incoming requests
D. To convert JSON strings into Python dictionaries

Solution

  1. Step 1: Understand JsonResponse role

    JsonResponse is designed to send JSON data back to the client as an HTTP response.
  2. Step 2: Differentiate from other JSON tasks

    It does not parse incoming JSON or render HTML; it only sends JSON safely with correct headers.
  3. Final Answer:

    To send JSON data as an HTTP response easily and safely -> Option A
  4. Quick Check:

    JsonResponse sends JSON response [OK]
Hint: JsonResponse sends JSON data back to clients [OK]
Common Mistakes:
  • Confusing JsonResponse with JSON parsing
  • Thinking it renders HTML templates
  • Assuming it converts JSON strings to dicts
2. Which of the following is the correct way to return a JSON response with a dictionary {"name": "Alice"} using JsonResponse?
easy
A. return JsonResponse([{"name": "Alice"}], safe=False)
B. return JsonResponse({"name": "Alice"})
C. return JsonResponse('[{"name": "Alice"}]')
D. return JsonResponse(json.dumps({"name": "Alice"}))

Solution

  1. Step 1: Use JsonResponse with a dictionary

    JsonResponse accepts a dictionary by default and sets safe=True, so no extra argument is needed.
  2. Step 2: Differentiate correct usage

    Passing a list of dictionaries produces a JSON array instead of a single object; passing JSON strings causes TypeError.
  3. Final Answer:

    return JsonResponse({"name": "Alice"}) -> Option B
  4. Quick Check:

    Dict input with default safe=True [OK]
Hint: Pass dict directly; no safe=False needed for dict [OK]
Common Mistakes:
  • Passing JSON string instead of dict
  • Passing a list produces JSON array instead of object
  • Using json.dumps inside JsonResponse
3. What will be the output of this Django view code?
from django.http import JsonResponse

def my_view(request):
    data = [1, 2, 3]
    return JsonResponse(data, safe=False)
medium
A. HTTP response with JSON array [1, 2, 3]
B. TypeError because safe=False is invalid
C. HTTP response with JSON string '[1, 2, 3]'
D. HTTP response with JSON object {"data": [1, 2, 3]}

Solution

  1. Step 1: Recognize safe=False allows list data

    JsonResponse by default requires dict; safe=False allows lists like [1, 2, 3].
  2. Step 2: Understand output JSON content

    The response will contain the JSON array [1, 2, 3] as the body with correct headers.
  3. Final Answer:

    HTTP response with JSON array [1, 2, 3] -> Option A
  4. Quick Check:

    safe=False lets list output [OK]
Hint: Use safe=False to return lists as JSON [OK]
Common Mistakes:
  • Omitting safe=False causes TypeError
  • Expecting JSON object instead of array
  • Confusing JSON string with JSON array
4. Identify the error in this Django view code:
from django.http import JsonResponse

def my_view(request):
    data = ["apple", "banana"]
    return JsonResponse(data)
medium
A. No error; code works fine
B. JsonResponse cannot return lists at all
C. JsonResponse requires json.dumps before returning
D. Missing safe=False causes TypeError for list data

Solution

  1. Step 1: Check data type passed to JsonResponse

    Data is a list, but JsonResponse defaults to safe=True, which only allows dicts.
  2. Step 2: Understand error cause

    Without safe=False, passing a list raises TypeError because it's unsafe to send raw lists.
  3. Final Answer:

    Missing safe=False causes TypeError for list data -> Option D
  4. Quick Check:

    List needs safe=False to avoid error [OK]
Hint: Add safe=False when returning lists [OK]
Common Mistakes:
  • Forgetting safe=False with lists
  • Trying to json.dumps before JsonResponse
  • Assuming JsonResponse accepts lists by default
5. You want to return a JSON response with a list of user names ["Alice", "Bob"] from a Django view. Which is the correct way to do this?
hard
A. return JsonResponse({"users": ["Alice", "Bob"]})
B. return JsonResponse(["Alice", "Bob"], safe=True)
C. return JsonResponse(["Alice", "Bob"], safe=False)
D. return JsonResponse(json.dumps(["Alice", "Bob"]))

Solution

  1. Step 1: Decide JSON structure to return

    Returning a list directly requires safe=False because JsonResponse defaults to safe=True (dict only).
  2. Step 2: Avoid common mistakes

    Passing safe=True with a list causes error; json.dumps returns string, which JsonResponse does not accept.
  3. Final Answer:

    return JsonResponse(["Alice", "Bob"], safe=False) -> Option C
  4. Quick Check:

    List with safe=False returns JSON array [OK]
Hint: Use safe=False to return JSON lists directly [OK]
Common Mistakes:
  • Setting safe=True with list causes error
  • Passing JSON string instead of Python list
  • Wrapping list inside dict unnecessarily
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