Python JSON: Encode(dumps), Decode(loads) & Read JSON File (2023)

What is JSON in Python?

JSON in Python is a standard format inspired by JavaScript for data exchange and data transfer as text format over a network. Generally, JSON is in string or text format. It can be used by APIs and databases, and it represents objects as name/value pairs. JSON stands for JavaScript Object Notation.

Python JSON Syntax:

JSON is written as key and value pair.

{ "Key": "Value", "Key": "Value",} 

JSON is very similar toPython dictionary. Python supports JSON, and it has an inbuilt library as a JSON.

JSON Library in Python

marshal‘ and ‘pickle’ external modules of Python maintain a version of JSON Python library. Working with JSON in Python to perform JSON related operations like encoding and decoding, you need to first import JSON library and for that in your .py file,

import json

Following methods are available in the JSON Python module

MethodDescription
dumps()encoding to JSON objects
dump()encoded string writing on file
loads()Decode the JSON string
load()Decode while JSON file read

Python to JSON (Encoding)

JSON Library of Python performs following translation of Python objects into JSON objects by default

PythonJSON
dictObject
listArray
unicodeString
number – int, longnumber – int
floatnumber – real
TrueTrue
FalseFalse
NoneNull

Converting Python data to JSON is called an Encoding operation. Encoding is done with the help of JSON library method – dumps()

JSON dumps() in Python

json.dumps() in Python is a method that converts dictionary objects of Python into JSON string data format. It is useful when the objects are required to be in string format for the operations like parsing, printing, etc.

Now lets perform our first json.dumps encoding example with Python:

import jsonx = { "name": "Ken", "age": 45, "married": True, "children": ("Alice","Bob"), "pets": ['Dog'], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ]}# sorting result in asscending order by keys:sorted_string = json.dumps(x, indent=4, sort_keys=True)print(sorted_string)

Output:

{"person": {"name": "Kenn", "sex": "male", "age": 28}})

Let’s see an example of Python write JSON to file for creating a JSON file of the dictionary using the same function dump()

# here we create new data_file.json file with write mode using file i/o operation with open('json_file.json', "w") as file_write:# write json data into filejson.dump(person_data, file_write)

Output:

Nothing to show…In your system json_file.json is created. You can check that file as shown in the below write JSON to file Python example.

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (1)

JSON to Python (Decoding)

JSON string decoding is done with the help of inbuilt method json.loads() & json.load() of JSON library in Python. Here translation table show example of JSON objects to Python objects which are helpful to perform decoding in Python of JSON string.

JSONPython
Objectdict
Arraylist
Stringunicode
number – intnumber – int, long
number – realfloat
TrueTrue
FalseFalse
NullNone

Let’s see a basic parse JSON Python example of decoding with the help of json.loads function,

import json # json library imported# json data stringperson_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}'# Decoding or converting JSON format in dictionary using loads()dict_obj = json.loads(person_data)print(dict_obj)# check type of dict_objprint("Type of dict_obj", type(dict_obj))# get human object detailsprint("Person......", dict_obj.get('person'))

Output:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}Type of dict_obj <class 'dict'>Person...... {'name': 'John', 'sex': 'male'}

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (2)

Decoding JSON File or Parsing JSON file in Python

Now, we will learn how to read JSON file in Python with Python parse JSON example:

NOTE: Decoding JSON file is File Input /Output (I/O) related operation. The JSON file must exist on your system at specified the location that you mention in your program.

Python read JSON file Example:

import json#File I/O Open function for read data from JSON Filewith open('X:/json_file.json') as file_object: # store file data in object data = json.load(file_object)print(data)

Here data is a dictionary object of Python as shown in the above read JSON file Python example.

Output:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (3)

Compact Encoding in Python

When you need to reduce the size of your JSON file, you can use compact encoding in Python.

Example,

import json# Create a List that contains dictionarylst = ['a', 'b', 'c',{'4': 5, '6': 7}]# separator used for compact representation of JSON.# Use of ',' to identify list items# Use of ':' to identify key and value in dictionarycompact_obj = json.dumps(lst, separators=(',', ':'))print(compact_obj)

Output:

'["a", "b", "c", {"4": 5, "6": 7}]'** Here output of JSON is represented in a single line which is the most compact representation by removing the space character from compact_obj **

Format JSON code (Pretty print)

  • The aim is to write well-formatted code for human understanding. With the help of pretty printing, anyone can easily understand the code.

Example:

import jsondic = { 'a': 4, 'b': 5 }''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. '''formatted_obj = json.dumps(dic, indent=4, separators=(',', ': '))print(formatted_obj)

Output:

{ "a" : 4, "b" : 5}

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (4)

To better understand this, change indent to 40 and observe the output-

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (5)

Ordering the JSON code:

sort_keys attribute in Python dumps function’s argument will sort the key in JSON in ascending order. The sort_keys argument is a Boolean attribute. When it’s true sorting is allowed otherwise not. Let’s understand with Python string to JSON sorting example.

Example,

import jsonx = { "name": "Ken", "age": 45, "married": True, "children": ("Alice", "Bob"), "pets": [ 'Dog' ], "cars": [ {"model": "Audi A1", "mpg": 15.1}, {"model": "Zeep Compass", "mpg": 18.1} ],}# sorting result in asscending order by keys:sorted_string = json.dumps(x, indent=4, sort_keys=True)print(sorted_string)

Output:

{ "age": 45, "cars": [ { "model": "Audi A1", "mpg": 15.1 }, { "model": "Zeep Compass", "mpg": 18.1 } ], "children": [ "Alice", "Bob"], "married": true, "name": "Ken", "pets": [ "Dog"]}

As you may observe the keys age, cars, children, etc are arranged in ascending order.

Complex Object encoding of Python

A Complex object has two different parts that is

  1. Real part
  2. Imaginary part

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (6)

Example: 3 +2i

Before performing encoding of a complex object, you need to check a variable is complex or not. You need to create a function which checks the value stored in a variable by using an instance method.

Let’s create the specific function for check object is complex or eligible for encoding.

import json# create function to check instance is complex or notdef complex_encode(object): # check using isinstance method if isinstance(object, complex): return [object.real, object.imag] # raised error using exception handling if object is not complex raise TypeError(repr(object) + " is not JSON serialized")# perform json encoding by passing parametercomplex_obj = json.dumps(4 + 5j, default=complex_encode)print(complex_obj)

Output:

'[4.0, 5.0]'

Complex JSON object decoding in Python

To decode complex object in JSON, use an object_hook parameter which checks JSON string contains the complex object or not. Lets understand with string to JSON Python Example,

import json # function check JSON string contains complex object def is_complex(objct): if '__complex__' in objct: return complex(objct['real'], objct['img']) return objct # use of json loads method with object_hook for check object complex or not complex_object =json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex) #here we not passed complex object so it's convert into dictionary simple_object =json.loads('{"real": 6, "img": 7}', object_hook = is_complex) print("Complex_object......",complex_object) print("Without_complex_object......",simple_object)

Output:

Complex_object...... (4+5j)Without_complex_object...... {'real': 6, 'img': 7}

Overview of JSON Serialization class JSONEncoder

JSONEncoder class is used for serialization of any Python object while performing encoding. It contains three different methods of encoding which are

  • default(o) – Implemented in the subclass and return serialize object for o object.
  • encode(o) – Same as JSON dumps Python method return JSON string of Python data structure.
  • iterencode(o) – Represent string one by one and encode object o.

With the help of encode() method of JSONEncoder class, we can also encode any Python object as shown in the below Python JSON encoder example.

# import JSONEncoder class from jsonfrom json.encoder import JSONEncodercolour_dict = { "colour": ["red", "yellow", "green" ]}# directly called encode method of JSONJSONEncoder().encode(colour_dict)

Output:

'{"colour": ["red", "yellow", "green"]}'

Overview of JSON Deserialization class JSONDecoder

JSONDecoder class is used for deserialization of any Python object while performing decoding. It contains three different methods of decoding which are

  • default(o) – Implemented in the subclass and return deserialized object o object.
  • decode(o) – Same as json.loads() method return Python data structure of JSON string or data.
  • raw_decode(o) – Represent Python dictionary one by one and decode object o.

With the help of decode() method of JSONDecoder class, we can also decode JSON string as shown in below Python JSON decoder example.

import json# import JSONDecoder class from jsonfrom json.decoder import JSONDecodercolour_string = '{ "colour": ["red", "yellow"]}'# directly called decode method of JSONJSONDecoder().decode(colour_string)

Output:

{'colour': ['red', 'yellow']}

Decoding JSON data from URL: Real Life Example

We will fetch data of CityBike NYC (Bike Sharing System) from specified URL(https://feeds.citibikenyc.com/stations/stations.json) and convert into dictionary format.

Python load JSON from file Example:

NOTE:- Make sure requests library is already installed in your Python, If not then open Terminal or CMD and type

  • (For Python 3 or above) pip3 install requests
import jsonimport requests# get JSON string data from CityBike NYC using web requests libraryjson_response= requests.get("https://feeds.citibikenyc.com/stations/stations.json")# check type of json_response objectprint(type(json_response.text))# load data in loads() function of json librarybike_dict = json.loads(json_response.text)#check type of news_dictprint(type(bike_dict))# now get stationBeanList key data from dictprint(bike_dict['stationBeanList'][0]) 

Output:

<class 'str'><class 'dict'>{'id': 487, 'stationName': 'E 20 St & FDR Drive','availableDocks': 24,'totalDocks': 34,'latitude': 40.73314259,'longitude': -73.97573881,'statusValue': 'In Service','statusKey': 1,'availableBikes': 9,'stAddress1': 'E 20 St & FDR Drive','stAddress2': '','city': '','postalCode': '','location': '', 'altitude': '', 'testStation': False, 'lastCommunicationTime': '2018-12-11 10:59:09 PM', 'landMark': ''}

Exceptions Related to JSON Library in Python:

  • Class json.JSONDecoderError handles the exception related to decoding operation. and it’s a subclass of ValueError.
  • Exception – json.JSONDecoderError(msg, doc)
  • Parameters of Exception are,
    • msg – Unformatted Error message
    • doc – JSON docs parsed
    • pos – start index of doc when it’s failed
    • lineno – line no shows correspond to pos
    • colon – column no correspond to pos

Python load JSON from file Example:

import json#File I/O Open function for read data from JSON Filedata = {} #Define Empty Dictionary Objecttry: with open('json_file_name.json') as file_object: data = json.load(file_object)except ValueError: print("Bad JSON file format, Change JSON File")

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (7)

Infinite and NaN Numbers in Python

JSON Data Interchange Format (RFC – Request For Comments) doesn’t allow Infinite or Nan Value but there is no restriction in Python- JSON Library to perform Infinite and Nan Value related operation. If JSON gets INFINITE and Nan datatype than it’s converted it into literal.

Example,

import json# pass float Infinite valueinfinite_json = json.dumps(float('inf'))# check infinite json typeprint(infinite_json)print(type(infinite_json))json_nan = json.dumps(float('nan'))print(json_nan)# pass json_string as Infinityinfinite = json.loads('Infinity')print(infinite)# check type of Infinityprint(type(infinite))

Output:

Infinity<class 'str'>NaNinf<class 'float'>

Repeated key in JSON String

RFC specifies the key name should be unique in a JSON object, but it’s not mandatory. Python JSON library does not raise an exception of repeated objects in JSON. It ignores all repeated key-value pair and considers only last key-value pair among them.

  • Example,
import jsonrepeat_pair = '{"a": 1, "a": 2, "a": 3}'json.loads(repeat_pair)

Output:

{'a': 3}

CLI (Command Line Interface) with JSON in Python

json.tool provides the command line interface to validate JSON pretty-print syntax. Let’s see an example of CLI

Python JSON: Encode(dumps), Decode(loads) & Read JSON File (8)

$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool

Output:

{ "name": " Kings Authur "}

Advantages of JSON in Python

  • Easy to move back between container and value (JSON to Python and Python to JSON)
  • Human readable (Pretty-print) JSON Object
  • Widely used in data handling.
  • Doesn’t have the same data structure in the single file.

Implementation Limitations of JSON in Python

  • In deserializer of JSON range and prediction of a number
  • The Maximum length of JSON string and arrays of JSON and nesting levels of object.

Python JSON Cheat Sheet

Python JSON FunctionDescription
json.dumps(person_data)Create JSON Object
json.dump(person_data, file_write)Create JSON File using File I/O of Python
compact_obj = json.dumps(data, separators=(‘,’,’:’))Compact JSON Object by removing space character from JSON Object using separator
formatted_obj = json.dumps(dic, indent=4, separators=(‘,’, ‘: ‘))Formatting JSON code using Indent
sorted_string = json.dumps(x, indent=4, sort_keys=True)Sorting JSON object key by alphabetic order
complex_obj = json.dumps(4 + 5j, default=complex_encode)Python Complex Object encoding in JSON
JSONEncoder().encode(colour_dict)Use of JSONEncoder Class for Serialization
json.loads(data_string)Decoding JSON String in Python dictionary using json.loads() function
json.loads(‘{“__complex__”: true, “real”: 4, “img”: 5}’, object_hook = is_complex)Decoding of complex JSON object to Python
JSONDecoder().decode(colour_string)Use of Decoding JSON to Python with Deserialization

FAQs

What is JSON dumps and JSON loads? ›

json loads -> returns an object from a string representing a json object. json dumps -> returns a string representing a json object from an object. load and dump -> read/write from/to file instead of string.

What is JSON dumps and JSON loads in Python? ›

loads() takes in a string and returns a json object. json. dumps() takes in a json object and returns a string.

How do I decode a JSON encode? ›

Decoding JSON data is as simple as encoding it. You can use the PHP json_decode() function to convert the JSON encoded string into appropriate PHP data type. The following example demonstrates how to decode or convert a JSON object to PHP object.

Should I use JSON dump or dumps? ›

The json. dump() method (without “s” in “dump”) used to write Python serialized object as JSON formatted data into a file. The json. dumps() method encodes any Python object into JSON formatted String.
...
Mapping between JSON and Python entities while Encoding.
PythonJSON
Truetrue
Falsefalse
Nonenull
4 more rows
May 14, 2021

What is JSON dump Python? ›

The dump() method is used when the Python objects have to be stored in a file. The dumps() is used when the objects are required to be in string format and is used for parsing, printing, etc, . The dump() needs the json file name in which the output has to be stored as an argument.

What is the difference between JSON load and JSON loads? ›

The json. load() is used to read the JSON document from file and The json. loads() is used to convert the JSON String document into the Python dictionary.

How do I read a JSON file? ›

load() − This function is used to parse or read a json file.
...
Read JSON file in Python
  1. Import json module.
  2. Open the file using the name of the json file witn open() function.
  3. Open the file using the name of the json file witn open() function.
  4. Read the json file using load() and put the json data into a variable.
Jun 11, 2021

What is JSON encode? ›

jsonencode encodes a given value to a string using JSON syntax. The JSON encoding is defined in RFC 7159. This function maps Terraform language values to JSON values in the following way: Terraform type. JSON type.

Top Articles
Latest Posts
Article information

Author: Trent Wehner

Last Updated: 12/08/2023

Views: 6202

Rating: 4.6 / 5 (56 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Trent Wehner

Birthday: 1993-03-14

Address: 872 Kevin Squares, New Codyville, AK 01785-0416

Phone: +18698800304764

Job: Senior Farming Developer

Hobby: Paintball, Calligraphy, Hunting, Flying disc, Lapidary, Rafting, Inline skating

Introduction: My name is Trent Wehner, I am a talented, brainy, zealous, light, funny, gleaming, attractive person who loves writing and wants to share my knowledge and understanding with you.