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. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition — December 1999. Python has a built-in package called json that can be used to work with JSON data.
The first step in working with JSON data in Python is to import the json package. Once you’ve imported the package, you can use the loads() function to parse a JSON string and convert it into a Python object. For example:
import json json_string = '{"name": "John Smith", "age": 30}' python_obj = json.loads(json_string) print(python_obj) # {'name': 'John Smith', 'age': 30}
You can also use the load() function to parse a JSON file and convert it into a Python object. For example:
import json with open('data.json') as json_file: python_obj = json.load(json_file) print(python_obj) # {'name': 'John Smith', 'age': 30}
Once you have a Python object, you can access its properties using the dot notation. For example:
print(python_obj.name) # John Smith
You can also use the dumps() function to convert a Python object into a JSON string. For example:
json_string = json.dumps(python_obj) print(json_string) # {"name": "John Smith", "age": 30}
You can also use the dump() function to write a Python object to a JSON file. For example:
with open('data.json', 'w') as json_file: json.dump(python_obj, json_file)
In addition, you can use the json.JSONEncoder and json.JSONDecoder classes to customize the way JSON data is encoded and decoded in Python. For example, you can use the cls parameter of the json.loads() and json.load() functions to pass a custom decoder class, and the cls parameter of the json.dumps() and json.dump() functions to pass a custom encoder class. For example:
class PersonDecoder(json.JSONDecoder): def __init__(self): json.JSONDecoder.__init__(self, object_hook=self.dict_to_person) def dict_to_person(self, dct): return Person(dct['name'], dct['age']) class Person: def __init__(self, name, age): self.name = name self.age = age json_string = '{"name": "John Smith", "age": 30}' person = json.loads(json_string, cls=PersonDecoder) print(person.name) # John Smith
In this example, we have defined a custom decoder class PersonDecoder which takes a dictionary and converts it into an instance of the Person class. We have defined __init__ method to call the parent class’s __init__ method and passing the object_hook argument as self.dict_to_person which is our custom method that creates an instance of person class.
Similarly, you can pass a custom encoder class to the json.dumps() function using the cls parameter.
This is just an example, you can adjust the logic according to your requirements.
In conclusion, the json package in Python provides a wide range of tools for working with JSON data. The loads() and load() functions are used to parse JSON data and convert it into a Python object, and the dumps() and dump() functions are used to convert a Python object into JSON data. Additionally, the json.JSONEncoder and json.JSONDecoder classes can be used to customize the way JSON data is encoded and decoded in Python. With consistent practice, you will become comfortable with these tools and will be able to implement them in your code with ease.