Recently one of my team members asked me a question about converting string to json, this made me explore more about this topic. After researching and experimenting with various methods I found several effective ways to accomplish this task. In this tutorial, I will explain how to convert string to JSON in Python with examples and screenshots.
Convert String to JSON
Before getting into the conversion process, let’s clarify something important: JSON is a string format, not a data structure. When we talk about “converting a string to JSON” in Python, we’re discussing how to parse a JSON-formatted string into Python objects (like dictionaries and lists) that we can work with programmatically.
Python’s built-in json module makes this process simple with functions designed specifically for encoding and decoding JSON data.
Read How to Convert a String to a Dictionary in Python?
Method 1: Use json.loads() Method
The most common way to convert a JSON string to a Python object is by using the json.loads() function (the ‘s’ stands for “string”).
import json
# A JSON formatted string
json_string = '{"name": "John", "age": 30, "city": "New York"}'
# Convert string to Python dictionary
python_dict = json.loads(json_string)
# Now you can work with it as a dictionary
print(python_dict['name'])
print(python_dict['age']) Output:
John
30I executed the above example code and added the screenshot below.

This method accepts a valid JSON string as input and converts it into appropriate Python objects – typically dictionaries for objects, lists for arrays, and so on.
Check out How to Convert Bytes to Strings in Python?
Method 2: Convert Python Objects Back to JSON with json.dumps()
Sometimes you need to go in the reverse direction – converting Python objects to JSON strings. The json.dumps() function handles this conversion:
import json
# A Python dictionary
python_dict = {
"name": "Sarah",
"age": 28,
"city": "Los Angeles",
"skills": ["Python", "JavaScript", "SQL"]
}
# Convert Python object to JSON string
json_string = json.dumps(python_dict)
print(json_string)Output:
{"name": "Sarah", "age": 28, "city": "Los Angeles", "skills": ["Python", "JavaScript", "SQL"]}I executed the above example code and added the screenshot below.

This function converts a Python object into a JSON string using Python’s established conversion table.
Read How to Split a String into Characters in Python?
Method 3: Work with JSON Files
Often, you’ll need to read JSON from files or write Python objects as JSON to files. The json module provides convenient functions for these operations:
import json
# Reading JSON from a file
with open('data.json', 'r') as file:
data = json.load(file) # Note: load() not loads()
# Writing Python object to a JSON file
with open('output.json', 'w') as file:
json.dump(data, file) # Note: dump() not dumps()Notice that when working with files, we use json.load() and json.dump() (without the ‘s’) instead of their string counterparts.
Advanced JSON Handling in Python
Let me explain how to handle advanced JSON while converting string to JSON in Python.
Check out How to Find a Character in a String Using Python?
Make JSON Output More Readable
By default, json.dumps() produces compact JSON without whitespace. For readability, you can add formatting:
formatted_json = json.dumps(python_dict, indent=4, sort_keys=True)
print(formatted_json)This creates nicely indented JSON with keys sorted alphabetically:
{
"age": 28,
"city": "Los Angeles",
"name": "Sarah",
"skills": [
"Python",
"JavaScript",
"SQL"
]
}Handle Complex Data Types
Python has data types that don’t exist in JSON. The json module provides ways to handle these conversions:
import json
from datetime import datetime
# A Python dictionary with a datetime object
data = {
"name": "Michael",
"registered_on": datetime.now()
}
# Custom function to handle non-serializable objects
def serializer(obj):
if isinstance(obj, datetime):
return obj.isoformat()
raise TypeError(f"Type {type(obj)} is not JSON serializable")
# Convert to JSON using the custom serializer
json_string = json.dumps(data, default=serializer)
print(json_string)Common Errors and Solutions
I will explain to you some common errors that you might face while converting strings to JSON and I will give a solution to it.
Read How to Convert a String to Lowercase in Python?
Error: JSON Decode Error
This typically happens when the string isn’t valid JSON:
try:
result = json.loads("This is not JSON")
except json.JSONDecodeError as e:
print(f"Invalid JSON: {e}")Solution: Validate JSON Before Parsing
You can check if a string is valid JSON before trying to parse it:
def is_valid_json(string):
try:
json.loads(string)
return True
except ValueError:
return FalseJSON vs. Python: Key Differences
Understanding the differences between JSON and Python data types is crucial:
| Python Type | JSON Type | Notes |
|---|---|---|
| dict | object | JSON uses strings as keys |
| list, tuple | array | JSON arrays work like Python lists |
| str | string | Similar behavior |
| int, float | number | JSON doesn’t distinguish between integers and floats |
| True/False | true/false | JavaScript uses lowercase |
| None | null | Different keywords for the same concept |
Check out How to Swap Commas and Dots in a String in Python?
Best Practices for JSON in Python
These are the best practices that I follow to ensure efficient JSON usage in Python:
- Always use try-except blocks when parsing JSON from external sources
- Validate JSON data before processing it
- Use appropriate content types when sending JSON in HTTP requests (
application/json) - Consider using specialized libraries like
simplejsonfor advanced needs - Be careful with floating-point numbers as JSON doesn’t guarantee precision
Practical Examples
Let me explain some real-time examples of converting string to JSON in Python.
Example 1: Parse JSON from an API Response
This example demonstrates how to retrieve JSON data from a web API and convert it into a Python dictionary using the json module
import json
import requests
response = requests.get("https://api.github.com/users/octocat")
if response.status_code == 200:
# Convert JSON string response to Python dictionary
user_data = json.loads(response.text)
print(f"Username: {user_data['login']}")
print(f"Followers: {user_data['followers']}")Example 2: Convert Nested Data Structures
We then use json.loads() to deserialize the JSON string back into a Python object (restored_user), allowing us to interact with the data just like any regular dictionary.
import json
# Complex nested structure
user = {
"id": 1001,
"name": "Jessica Miller",
"email": "jessica@example.com",
"is_active": True,
"address": {
"street": "123 Tech Lane",
"city": "San Francisco",
"state": "CA",
"zip": "94107"
},
"tags": ["developer", "python", "ai"]
}
# Convert to JSON string
json_data = json.dumps(user, indent=2)
print(json_data)
# Convert back to Python
restored_user = json.loads(json_data)
print(f"User's city: {restored_user['address']['city']}")Read How to Remove Punctuation from Strings in Python?
Conclusion
In this tutorial, I will explain how to convert string to JSON in Python. I discussed methods such as using json.loads() method, using json.dumps() method, and working with JSON files. I also explained advanced JSON handling in Python, common errors and solutions, JSON vs. Python, some best practices for JSON, and practical examples.
You can read:
- How to Repeat a String Multiple Times in Python?
- How to Convert Datetime to String in Python?
- How to Concatenate String and Int in Python?

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.