>>>
help(json.load)
load(fp, *, cls=None,
object_hook=None, parse_float=None, parse_int=None, parse_constant=None,
object_pairs_hook=None, **kw)
Deserialize ``fp`` (a
``.read()``-supporting file-like object containing a JSON document) to a Python
object.
help(json.loads)
loads(s, *, cls=None,
object_hook=None, parse_float=None, parse_int=None, parse_constant=None,
object_pairs_hook=None, **kw)
Deserialize ``s`` (a ``str``, ``bytes`` or
``bytearray`` instance containing a JSON document) to a Python object.
Example using json.load
Assume you have a file
named data.json with the following content:
{
"name": "Alice",
"age": 25,
"city": "NY"
}
You can load this JSON
data into a Python dictionary as follows:
import json
# Open the JSON file and
parse its content
with open('data.json',
'r') as file:
data = json.load(file)
print(data)
# Output:{'name':
'Alice', 'age': 25, 'city': 'NY'}
Example using json.loads
Suppose you have a JSON
string:
import json
json_string='{"name":"Bob",
"age":30,"city": "NY"}'
# Parse the JSON string
into a Python dictionary
data =
json.loads(json_string)
print(data)
# Output: {'name': 'Bob',
'age': 30, 'city': 'NY'}
Example:
1. Saving a Dictionary to
a JSON File
You can use the json.dump
function to write a dictionary to a file in JSON format. This method writes the
data directly to the file in a structured JSON format, which is easy to read
back later using json.load.
import json
data = {
"name": "Alice",
"age": 25,
"city": "Wonderland"
}
# Open a file in write
mode and dump the dictionary as JSON
with open('data.json',
'w') as json_file:
json.dump(data, json_file, indent=4) # 'indent=4' makes the output nicely
formatted
2. Saving a Dictionary to
a Text File as a String
There are two common
approaches depending on what string format you need:
Method A: Using str()
This method writes the
Python dictionary's string representation to the file. Note that this
representation is not valid JSON but rather the standard Python dictionary
format.
data = {
"name": "Alice",
"age": 25,
"city": "Wonderland"
}
# Open a text file in
write mode and write the dictionary as a string
with open('data.txt',
'w') as text_file:
text_file.write(str(data))
The content of data.txt
will look like:
{'name': 'Alice', 'age':
25, 'city': 'Wonderland'}
Method B: Using json.dumps()
If you prefer to store
the dictionary as a JSON-formatted string in a text file (which is both
human-readable and can be easily parsed later), you can convert it to a string
first with json.dumps and then write it.
import json
data = {
"name": "Alice",
"age": 25,
"city": "Wonderland"
}
# Convert the dictionary
to a JSON formatted string
json_string =
json.dumps(data, indent=4)
# Open a text file in
write mode and write the JSON string
with open('data.txt',
'w') as text_file:
text_file.write(json_string)
The resulting data.txt
will contain:
{
"name": "Alice",
"age": 25,
"city": "Wonderland"
}
Summary
json.dump: Directly
writes a dictionary to a file as JSON.
str(): Converts the
dictionary to its Python string representation.
json.dumps: Converts the
dictionary to a JSON formatted string, which can then be written to a text
file.
Choose the method that
best fits your needs for later reading or processing the file.
help me fix: >>>
sx
"{'name': 'Bob',
'age': 30, 'city': 'Builderland'}"
>>> sd =
json.loads(sx)
Traceback (most recent
call last):
File "<stdin>", line 1, in
<module>
File "C:\Program
Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\json\__init__.py",
line 346, in loads
return _default_decoder.decode(s)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program
Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\json\decoder.py",
line 338, in decode
obj, end = self.raw_decode(s, idx=_w(s,
0).end())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Program
Files\WindowsApps\PythonSoftwareFoundation.Python.3.12_3.12.2288.0_x64__qbz5n2kfra8p0\Lib\json\decoder.py",
line 354, in raw_decode
obj, end = self.scan_once(s, idx)
^^^^^^^^^^^^^^^^^^^^^^
json.decoder.JSONDecodeError:
Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
GPT:
The error occurs because JSON requires double quotes
(") for both keys and string values, but your string uses single quotes
('). Here are two ways to fix this:
1. Convert the String to
Valid JSON
If you can change the
string to proper JSON format, use double quotes. For example:
import json
# Valid JSON string with
double quotes
sx = '{"name":
"Bob", "age": 30, "city":
"Builderland"}'
sd = json.loads(sx)
print(sd)
2. Use ast.literal_eval
for a Python Literal
If you have a string in
Python's dictionary format (using single quotes) and you want to convert it
into a dictionary, you can use the ast.literal_eval function:
import ast
sx = "{'name':
'Bob', 'age': 30, 'city': 'Builderland'}"
sd = ast.literal_eval(sx)
# sd is a dict
print(sd)
This will also output:
#{'name': 'Bob', 'age':
30, 'city': 'Builderland'}
str(sd) == sx # return
True
Please comment the
following two strings from the perspetive of JSON read and write. which one is
preferred?
string1='{"name":"Bob",
"age":30,"city": "NY"}'
string2="{'name':
'Bob', 'age': 30, 'city': 'NY'}"
Answer: string1 is
preferred and valid JSON format.
Best Practice:
Always use json.dumps() to generate JSON strings from Python dictionaries, as it will ensure the proper formatting (i.e., using double quotes).