- How to Convert a String to JSON in Python
- What Is a JSON File?
- Working with JSON Files in Python
- From JSON to Python Object: Deserializing
- From Python Object to JSON String: Serializing
- Creating a JSON File with dump()
- Printing in the Command Line
- Learn More About JSON and Python
- JSON in Python: How To Read, Write, and Parse
- Importing the built-in JSON library
- How to parse JSON in Python
- Encoding JSON with json.dumps
- Pretty printing JSON on the command line
- How to read a JSON file in python
- How to write JSON to a file in Python
- JSON5 vs. JSON
- Frequently Asked Questions
- Keep learning
- Get certified with our courses
- Learn more
- Leave a Comment Cancel reply
How to Convert a String to JSON in Python
JSON stands for JavaScript Object Notation. Although its name indicates that it is associated with the JavaScript programming language, the JSON format is language-independent and frequently used in many different programming languages.
What Is a JSON File?
JSON files are commonly used in transferring data between computers. For instance, when downloading a file from an API, you often need to deal with JSON files. Here is a great article that explains downloading a file in Python from an API.
The following is an example of a JSON file:
Files that store data in JSON format are called JSON files. These files are text-based, human-readable, and easy to process – all of which make them highly popular.
In this article, we will learn how to convert a string to JSON in Python and how to create JSON files from Python objects.
Working with JSON Files in Python
Python has a built-in library called json which provides simple and efficient methods for working with JSON files. Let’s go over some examples that demonstrate how to convert a string to JSON in Python and vice versa.
From JSON to Python Object: Deserializing
The following is a JSON string:
We can use the loads() method of the json library to convert this string to a Python object:
>>> import json >>> myobject = json.loads(example)
We have just converted JSON encoded data into a Python object. This process is called deserializing. The resulting Python object is a dictionary. A Python dictionary consists of key-value pairs and we can easily access its items using the keys. For example, if we want to access the FirstName in the myobject dictionary, we write:
If we have a JSON file and want to turn it into a Python object, we can use the load() method. Take a quick look at the “employee” JSON file at the beginning of the article. The following code block reads this file and saves it into a Python dictionary.
>>> with open("employee.json", "r") as read_file: . employee = json.load(read_file) . >>> print(employee) , ]>
Now employee is a Python dictionary object.
It is important to emphasize the difference between the json library’s load( ) and loads() methods. The load method is used for creating a Python object from a JSON file, whereas the loads() method converts a JSON string to a Python object.
From Python Object to JSON String: Serializing
Just like we can create a Python object from a JSON file, we can convert a Python object to a JSON string or file. This process is called serialization.
The dumps() method converts a Python dictionary to a JSON string. In the deserializing section, we created a dictionary called myobject . It can be converted back to a JSON string as follows:
The output is a string (notice the single quotes around the curly brackets), so we cannot access a specific key-value pair as we do with dictionaries.
This very simple string is not difficult to read. However, JSON strings can be much longer and have nested parts. For such cases, the dumps() method provides a more readable way of printing. We can pretty print this string by setting the optional indent parameter:
>>> print(json.dumps(myobject, indent=3))
The dumps() method also has a parameter for sorting by key:
>>> print(json.dumps(myobject, indent=3, sort_keys=True))
JSON files are often used for serialization (pickling), e.g. for when you want to maintain some data between the runs of your application. You can learn more about object serialization in this article.
Creating a JSON File with dump()
The dumps() method converts a Python object to a JSON formatted string. We can also create a JSON file from data stored in a Python dictionary. The method for performing this task is dump() .
Let’s use the dump() method for creating a JSON file. We’ll use the employee dictionary we created in the previous section:
with open("new_employee.json", "w") as write_file: json.dump(employee, write_file, indent=4)
This creates a file called new_employee.json in your current working directory and opens it in write mode. Then, we use the dump() method to serialize a Python dictionary.
The dump() method takes two positional arguments. The first one is the object that stores the data to be serialized (here, a Python dictionary). The second one is the file to write the serialized data. The indent parameter is optional.
Printing in the Command Line
The tool() method of the json library allows for pretty-printing JSON files in the command line. Let’s try it on the new_employee.json file we created in the previous section.
The first step is to open a command-line interface. Then we need to change the directory to the location where the new_employee.json file is saved.
The following command will print the JSON file in a nice, clean format:
python -m json.tool new_employee.json
The following image shows how it looks in the Windows command prompt.
Learn More About JSON and Python
We have covered how to read and write JSON files in Python. The built-in json library makes it easy to do both of these. One of the advantages of Python is the rich selection of built-in and third-party libraries that simplify most tasks.
If you are learning or plan to learn Python, our Learn Programming with Python track is a great way to start. It is designed for beginners and contains 5 interactive courses. The advantage of learning with an interactive course is that you get real, hands-on practice writing code; this is essential for learning a programming language.
LearnPython.com also offers an entire course dedicated to JSON Files in Python. The course is also interactive and contains 35 exercises. If you want to practice the concepts we’ve discussed in this article, this course is for you. Happy learning!
JSON in Python: How To Read, Write, and Parse
JSON, short for JavaScript Object Notation, is an open standard. Although its name doesn’t imply so, it is a language-independent data format. With Python’s JSON library, we can read, write, and parse JSON to both store and exchange data using this versatile data format. It’s a prevalent data format because it is easy to read and write for humans as well, although not as easy as YAML!
Working with JSON in Python is super easy! Python has two data types that, together, form the perfect tool for working with JSON in Python: dictionaries and lists. In this article, I’ll show you how to use the built-in Python JSON library. In addition, we’ll take a look at JSON5: an extension to JSON that allows things like comments inside your JSON documents.
Importing the built-in JSON library
Python ships with a powerful and elegant JSON library to help you decode and encode JSON. You can import the module with:
This library is part of Python, so you don’t need to install it with the Pip package manager.
How to parse JSON in Python
Parsing a string of JSON data, also called decoding JSON, is as simple as using json.loads(…) . Loads is short for load string.
- objects to dictionaries
- arrays to lists,
- booleans, integers, floats, and strings are recognized for what they are and will be converted into the correct types in Python
- Any null will be converted into Python’s None type
Here’s an example of json.loads in action:
If the interactive example above doesn’t work (it’s still in beta), here’s a more static example instead:
>>> import json >>> jsonstring = » >>> person = json.loads(jsonstring) >>> print(person[‘name’], ‘is’, person[‘age’], ‘years old’) erik is 38 years old >>> print(person)
The output might look like a string, but it’s actually a dictionary that you can use in your code as explained on our page about Python dictionaries. You can check for yourself:
Encoding JSON with json.dumps
Encoding JSON data with Python’s json.dumps is just as easy as decoding. Use json.dumps (short for ‘dump to string’) to convert a Python object consisting of dictionaries, lists, and other native types into a string:
Here’s the same example, in case the above interactive example doesn’t work in your browser:
import json person = json_string = json.dumps(person) print(json_string) # # To make sure, let’s print the type too print(type(json_string)) #
This is the same document, converted back to a string! If you want to make your JSON document more readable for humans, use the indent option. It will nicely format the JSON, using space characters:
>>> person = >>> print(json.dumps(person, indent=2))
Pretty printing JSON on the command line
Python’s JSON module can also be used from the command line. It will both validate and pretty-print your JSON:
$ echo «< \"name\": \"Monty\", \"age\": 45 >» | \ python3 -m json.tool
You may also be interested in using the jq-tool for this though!
How to read a JSON file in python
Besides json.loads , there’s also a function called json.load (without the s). It will load data from a file, but you have to open the file yourself. If you want to read the contents of a JSON file into Python and parse it, use the following example:
with open('data.json') as json_file: data = json.load(json_file) .
How to write JSON to a file in Python
The json.dump function is used to write data to a JSON file. You’ll need to open the file in write mode first:
data = with open('data.json', 'w') as json_file: json.dump(data, json_file)
JSON5 vs. JSON
JSON5 is an extension of JSON. The main advantage of JSON5 over JSON is that it allows for more human-readable and editable JSON files. Notable JSON5 features are:
- single-line and multi-line comments
- trailing commas in objects and arrays
- single-quoted strings
For machine-to-machine communication, I recommend using the built-in JSON library. However, when using JSON as a configuration file, JSON5 is recommended, mainly because it allows for comments.
Python does not support JSON5 natively. To read and write JSON5, we’ll need to pip install one of the following packages:
- PyJSON5: a library that uses the official JSON5 C library, making it the fastest option to use.
- json5: a pure Python implementation, confusingly called pyjson5 as well on in their documentation. According to the author, the library is slow.
I recommend the first (fast) option, but unless you are parsing hundreds or thousands of documents, the speed advantage will be negligible.
Both libraries offer functions that mimic the Python JSON module, making it super easy to convert your code to JSON5. You could, for example, do an import pyjson5 as json but I recommend making it more explicit that you’re using json5 as show in the following example:
import pyjson5 as json5 with open("person.json") as f: p = json5.decode(f.read()) print(p)
To make it extra clear that you’re using JSON5, you can also use the extension .json5 . While you’re at it, search the marketplace of your code editor for a JSON5 plugin. E.g., VSCode has one or two.
Frequently Asked Questions
Simply use the methods described above. The json.dump and json.dumps functions accept both dictionaries and lists
Similar to arrays, so use json.dump or json.dumps on the dictionary.
The dump and dumps functions both accept an option called sort_keys, for example: json.dumps(data, sort_keys=True) .
By default: no. The library outputs ASCII and will convert characters that are not part of ASCII. If you want to output Unicode, set ensure_ascii to False. Example: json.dumps(data, ensure_ascii=False)
Keep learning
- If you’re looking for a format that is easy to write for humans (e.g.: config files), read our article on reading and writing YAML with Python.
- JMESPath is a query language for JSON. JMESPath in Python allows you to obtain the data you need from a JSON document or dictionary easily.
- If you need to parse JSON on the command-line, try our article on a tool called jq!
- Get a refresher on opening, writing, and reading files with Python.
Get certified with our courses
Our premium courses offer a superior user experience with small, easy-to-digest lessons, progress tracking, quizzes to test your knowledge, and practice sessions. Each course will earn you a downloadable course certificate.
Learn more
This article is part of my Python tutorial. You can head over to the start of the tutorial here. You can navigate this tutorial using the buttons at the top and bottom of the articles. To get an overview of all articles in the tutorial, please use the fold-out menu at the top.
If you liked this article, you might also like to read the following articles:
Leave a Comment Cancel reply
You must be logged in to post a comment.
You are browsing the free Python tutorial. Make sure to check out my full Python courses as well.
Subscribe to my newsletter for Python news, tips, and tricks!