The full-form of JSON is JavaScript Object Notation. It means that a script (executable) file which is made of text in a programming language, is used to store and transfer the data. Python supports JSON through a built-in package called json
. To use this feature, we import the json package in Python script. The text in JSON is done through quoted-string which contains the value in key-value mapping within { }
. It is similar to the dictionary in Python.
json.dump()
json
module in Python module provides a method called dump()
which converts the Python objects into appropriate json objects. It is a slight variant of dumps()
method.
Difference between dump() and dumps()
dump() | dumps() |
---|---|
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. | The dumps() does not require any such file name to be passed. |
This method writes in the memory and then command for writing to disk is executed separately | This method directly writes to the json file |
Faster method | 2 times slower |
dump() and its arguments
Syntax: json.dump(d, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None)
Parameters:
- indent : It improves the readability of the json file. The possible values that can be passed to this parameter are simply double quotes(
""
), any integer values. Simple double quotes makes every key-value pair appear in new line.Example:
import
json
# python object(dictionary) to be dumped
dict1
=
{
"emp1"
: {
"name"
:
"Lisa"
,
"designation"
:
"programmer"
,
"age"
:
"34"
,
"salary"
:
"54000"
},
"emp2"
: {
"name"
:
"Elis"
,
"designation"
:
"Trainee"
,
"age"
:
"24"
,
"salary"
:
"40000"
},
}
# the json file where the output must be stored
out_file
=
open
(
"myfile.json"
,
"w"
)
json.dump(dict1, out_file, indent
=
6
)
out_file.close()
Output:
- skipkeys: If the key is not of standard allowed types like int, float, string, None or bool, error will be generated while dumping them. To avoid that if this parameter is set to true.
Example:
import
json
# python object(dictionary) to be dumped
dict1
=
{
(
'addresss'
,
'street'
):
'Brigade road'
,
}
# the json file where the output must be stored
out_file
=
open
(
"myfile.json"
,
"w"
)
json.dump(dict1, out_file, indent
=
6
)
out_file.close()
Output:
If skipkeys is not set to true, then the following error will be generated :
- separator: This parameter takes up either one or two values. The first value specifies the symbol that separates one key-value pair from another. The next one specifies the symbol that separates the value from its key.
- sort_keys: This parameter takes Boolean value. If it is set to True, the keys are set in ascending order else, they appear as in the Python object
- ensure_ascii: This parameter also takes only Boolean values. If it is not set to true the non-ASCII characters are dumped into the output file as it is. By default the value is true.
See the two codes below to get the difference.
Example 1:
# dictionary to be dumped
d
=
{
'lang'
:
'??? ????'
}
with
open
(
'myfile.json'
,
'w'
, encoding
=
'utf8'
) as json_file:
json.dump(d, json_file, ensure_ascii
=
False
)
Output:
Example 2: If it is set to True, then the content of the json file will be:
import
json
# dictionary to be dumped
d
=
{
'lang'
:
'??? ????'
}
with
open
(
'myfile.json'
,
'w'
, encoding
=
'utf8'
) as json_file:
json.dump(d, json_file, ensure_ascii
=
True
)
Output:
- allow_nan: It helps to serialize the range of float values.
Example 1:
import
json
# dictionary to be dumped
d
=
{
'a'
:
1
,
'x'
:
float
(
'nan'
)
}
with
open
(
'myfile.json'
,
'w'
, encoding
=
'utf8'
) as json_file:
json.dump(d, json_file, allow_nan
=
False
)
Output:
Example 2: If it is set to True, the error will not be generated. The content in the json file will be :
import
json
# dictionary to be dumped
d
=
{
'a'
:
1
,
'x'
:
float
(
'nan'
)
}
with
open
(
'myfile.json'
,
'w'
, encoding
=
'utf8'
) as json_file:
json.dump(d, json_file, allow_nan
=
True
)
Output: