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
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/JSON/python-json-module-tutorial.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics