JSON (JavaScript Object Notation) is a lightweight data interchange format that is easy for humans to read and write, and easy for machines to parse and generate. Python provides a built-in module called json
to work with JSON data.
JSON Syntax
JSON data is written in key/value pairs. Keys are strings, and values can be strings, numbers, objects, arrays, true
, false
, or null
.
Example of JSON:
{
"name": "John",
"age": 30,
"city": "New York"
}
Parsing JSON
To parse a JSON string into a Python dictionary, you can use the json.loads()
method.
Example:
import json
# JSON string
json_data = '{"name": "John", "age": 30, "city": "New York"}'
# Parse JSON string into Python dictionary
data = json.loads(json_data)
print(data["name"]) # Output: John
Converting to JSON
To convert a Python dictionary into a JSON string, use the json.dumps()
method.
Example:
import json
# Python dictionary
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# Convert dictionary to JSON string
json_data = json.dumps(data)
print(json_data) # Output: {"name": "John", "age": 30, "city": "New York"}
Reading JSON from a File
To read JSON data from a file, you can use the json.load()
method.
Example:
import json
# Read JSON data from a file
with open('data.json', 'r') as file:
data = json.load(file)
print(data["name"]) # Output depends on content of data.json
Writing JSON to a File
To write JSON data to a file, use the json.dump()
method.
Example:
import json
# Python dictionary
data = {
"name": "John",
"age": 30,
"city": "New York"
}
# Write JSON data to a file
with open('data.json', 'w') as file:
json.dump(data, file)
Working with Nested JSON
JSON data can be nested, meaning objects can contain other objects or arrays. You can parse and access nested JSON data similarly.
Example:
import json
# JSON string
json_data = '''
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York"
},
"phoneNumbers": [
{"type": "home", "number": "212-555-1234"},
{"type": "office", "number": "646-555-4567"}
]
}
'''
# Parse JSON string
data = json.loads(json_data)
print(data["address"]["city"]) # Output: New York
print(data["phoneNumbers"][1]["number"]) # Output: 646-555-4567