Python JSON Module tutorial
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
Previous:
Working with JSON and JavaScript
Next:
Working with JSONPath and JavaScript
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics