JSON in Python

JSON in Python

What is JSON?

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. JSON is often used for exchanging data between a server and a web application.

JSON Structure:

  • JSON Object: { “key1”: “value1”, “key2”: “value2” }
  • JSON Array: [ “value1”, “value2” ]

Using the json Module in Python

The json module in Python provides methods to work with JSON data. It allows you to convert Python objects to JSON strings and vice versa.

Key Functions

  • json.loads(s, object_hook=None): Converts a JSON string to a Python object (e.g., dictionary).
  • json.load(fp, object_hook=None): Reads JSON from a file and converts it to a Python object.
  • json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, default=None, sort_keys=False): Converts a Python object to a JSON string.
  • json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, indent=None, separators=None, default=None, sort_keys=False): Writes a Python object to a JSON file.

Encoding and Decoding

  • Decoding JSON: Convert a JSON string to a Python object.
  • Encoding JSON: Convert a Python object to a JSON string.

Decoding JSON

Decoding is the process of converting a JSON string into a Python object. The json.loads() method is used for this process.

Example of Decoding: 

import json
# JSON string
json_string = '{"name": "Alice", "age": 30, "city": "Paris"}'
# Convert JSON to Python object
data = json.loads(json_string)
print(data)         # {'name': 'Alice', 'age': 30, 'city': 'Paris'}
print(type(data))   # <class 'dict'>

 Additional Details:

  • Supported JSON Types: JSON types like objects (dictionaries in Python), arrays (lists in Python), strings, numbers, booleans (true/false), and null (equivalent to None in Python) are automatically converted to their corresponding Python types.

Encoding JSON

Encoding is the process of converting a Python object into a JSON string. The json.dumps() method is used for this process.

Example of Encoding: 

import json
# Python object
data = {
    "name": "Alice",
    "age": 30,
    "city": "Paris"
}
# Convert Python object to JSON string
json_string = json.dumps(data)
print(json_string)  # {"name": "Alice", "age": 30, "city": "Paris"}
print(type(json_string))  # <class 'str'>

Additional Details:

  • Supported Python Types: Python types like dictionaries, lists, strings, numbers, booleans (True/False), and None are automatically converted to their corresponding JSON types.
  • Non-Serializable Values: Some Python types like custom objects, sets, or functions cannot be serialized directly to JSON. You need to use the default parameter to handle these types.

Working with JSON Files

You can also read and write JSON data directly from and to files using json.load() and json.dump().

Example of Reading from a File: 

import json
# Read JSON from a file
with open('data.json', 'r') as file:
    data = json.load(file)
print(data)

Example of Writing to a File: 

import json
data = {
    "name": "Alice",
    "age": 30,
    "city": "Paris"
}
# Write JSON to a file
with open('data.json', 'w') as file:
    json.dump(data, file, indent=4)

Additional Details:

  • indent: Used to format the JSON with indentation.
  • separators: You can customize the separators used in the JSON output.
  • ensure_ascii: Defines whether non-ASCII characters should be escaped.

Handling Exceptions

When working with JSON, it is important to handle exceptions that may arise due to malformed data or other issues.

Example of Exception Handling: 

import json
# Invalid JSON string
invalid_json_string = '{"name": "Alice", "age": 30, "city": Paris}'
try:
    # Attempt to convert to Python object
    data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
    print(f"JSON decoding error: {e}")

Additional Details:

  • json.JSONDecodeError: Raised when there is an error in the JSON format. It is useful for debugging invalid JSON strings.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *