w3resource logo


Binary json

Python JSON Module tutorial

Secondary Nav

Encode Python objects as JSON strings, and decode JSON strings into Python objects

In Python, the json module provides an API similar to convert in-memory Python objects to a serialized representation known as JavaScript Object Notation (JSON) and vice-a-versa.

Encode Python objects as JSON strings

Basic Usage :

json.dump(obj, fp,
                  skipkeys=False,
                  ensure_ascii=True,
  		  check_circular=True,
		  allow_nan=True,
		  cls=None,
		  indent=None,
		  separators=None,
		  default=None,
		  sort_keys=False, **kw)

The above method serialize obj as a JSON formatted stream to fp (a .write()-supporting file-like object) using the following conversion table.

Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

Options :

  • The default value of skipkeys is False. If skipkeys is True, then dict keys that are not of a basic type (str, int, float, bool, None) will be skipped instead of raising a TypeError.
  • The json module always produces str objects, not bytes objects. Therefore, fp.write() must support str input.
  • If ensure_ascii is True (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is False, these characters will be output as-is.
  • The default value of check_circular is True. If check_circular is False, then the circular reference check for container types will be skipped and a circular reference will result in an OverflowError.
  • The default value of allow_nan is True. If allow_nan is False, then it will be a ValueError to serialize out of range float values (nan, inf, -inf) in strict compliance with the JSON specification, instead of using the JavaScript equivalents (NaN, Infinity, -Infinity).
  • If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or "" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as "\t"), that string is used to indent each level.
  • Use (',', ': ') as default if indent is not None.
  • The default value of sort_keys is False. If sort_keys is True, then the output of dictionaries will be sorted by key.

Examples : Python Dictionaries to JSON strings

Code :

import json
student = {"101":{"class":'V', "Name":'Rohit',  "Roll_no":7},
           "102":{"class":'V', "Name":'David',  "Roll_no":8},
           "103":{"class":'V', "Name":'Samiya', "Roll_no":12}}
print(json.dumps(student));

Output :

{"103": {"class": "V", "Name": "Samiya", "Roll_no": 12}, 
"102": {"class": "V", "Name": "David", "Roll_no": 8}, 
"101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}

Examples : Python Dictionaries to JSON strings (sorted by key)

Code :

import json
student = {"101":{"class":'V', "Name":'Rohit',  "Roll_no":7},
           "102":{"class":'V', "Name":'David',  "Roll_no":8},
           "103":{"class":'V', "Name":'Samiya', "Roll_no":12}}
print(json.dumps(student, sort_keys=True));

Output :

{"101": {"Name": "Rohit", "Roll_no": 7, "class": "V"}, 
"102": {"Name": "David", "Roll_no": 8, "class": "V"}, 
"103": {"Name": "Samiya", "Roll_no": 12, "class": "V"}}

Examples : Python tuple to JSON array

Code :

import json
tup1 = 'Red', 'Black', 'White';
print(json.dumps(tup1));

Output :

["Red", "Black", "White"]

Examples : Python list to JSON array

Code :

import json
list1 = [5, 12, 13, 14];
print(json.dumps(list1));

Output :

[5, 12, 13, 14]

Examples : Python string to JSON string

Code :

import json
string1 = 'Python and JSON';
print(json.dumps(string1));

Output :

"Python and JSON"

Examples : Python Boolean values to JSON Boolean values

Code :

import json
x = True;
print(json.dumps(x));

Output :

true

Examples : Python int, float, int- & float-derived Enums to JSON number

Code :

import json
x = -456;
y = -1.406;
z =  2.12e-10
print(json.dumps(x));
print(json.dumps(y));
print(json.dumps(z));

Output :

-456
-1.406
2.12e-10

Decode JSON strings into Python objects

Basic Usage :

json.load(fp, 
          cls=None, 
		  object_hook=None, 
		  parse_float=None, 
		  parse_int=None, 
		  parse_constant=None, 
		  object_pairs_hook=None, **kw)

The above method deserialize fp (a .read()-supporting file-like object containing a JSON document) to a Python object using the following conversion table.

JSON Python
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

 

Options :

  • The default value of skipkeys is False. If skipkeys is True, then dict keys that are not of a basic type (str, int, float, bool, None) will be skipped instead of raising a TypeError.
  • The json module always produces str objects, not bytes objects. Therefore, fp.write() must support str input.
  • If ensure_ascii is True (the default), the output is guaranteed to have all incoming non-ASCII characters escaped. If ensure_ascii is False, these characters will be output as-is.
  • The default value of check_circular is True. If check_circular is False, then the circular reference check for container types will be skipped and a circular reference will result in an OverflowError.
  • The default value of allow_nan is True. If allow_nan is False (default: True), then it will be a ValueError to serialize out of range float values (nan, inf, -inf) in strict compliance with the JSON specification, instead of using the JavaScript equivalents (NaN, Infinity, -Infinity).
  • If indent is a non-negative integer or string, then JSON array elements and object members will be pretty-printed with that indent level. An indent level of 0, negative, or "" will only insert newlines. None (the default) selects the most compact representation. Using a positive integer indent indents that many spaces per level. If indent is a string (such as "\t"), that string is used to indent each level.
  • Use (',', ': ') as default if indent is not None.
  • default(obj) is a function that should return a serializable version of obj or raise TypeError. The default simply raises TypeError.
  • The default value of sort_keys is False. If sort_keys is True, then the output of dictionaries will be sorted by key.

Examples : JSON strings to Python Dictionaries

Code :

import json
json_data = '{"103": {"class": "V", "Name": "Samiya", "Roll_n": 12}, "102": {"class": "V", "Name": "David", "Roll_no": 8}, "101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}';
print(json.loads(json_data));

Output :

{"103": {"class": "V", "Name": "Samiya", "Roll_no": 12}, 
"102": {"class": "V", "Name": "David", "Roll_no": 8}, 
"101": {"class": "V", "Name": "Rohit", "Roll_no": 7}}

Examples : JSON array Python tuple

Code :

import json
Json_array = ["Red", "Black", "White"]
print(json.dumps(Json_array));

Output :

["Red", "Black", "White"]

Examples : Python list to JSON array

Code :

import json
list1 = [5, 12, 13, 14];
print(json.dumps(list1));

Output :

[5, 12, 13, 14]

Examples : JSON string to Python string

Code :

import json 
Json_string = "Python and JSON" 
print(json.dumps(Json_string));

Output :

"Python and JSON"

Python Version : 3.4



Join our Question Answer community to learn and share your programming knowledge.

Help the community:

Python: Fizzbuzz

C++: Decimal to binary conversion

JavaScript: Need Help in JavaScript

Python: Help me with this program