Python JSON Dump To Or Load From File Example

JSON is the standard data format that is used to save and transfer text data between programs. It is independent of the programming language. Python provides a built-in json module to process JSON string and Python object conversion. This article will give you some examples.

1. JSON String And Python Object Conversion Overview.

Before you can use the python json module, you should import it first.

import json

1.1 Convert Dict Object To JSON String.

  1. Create a python dictionary object.
  2. Call json.dumps() method to get JSON string from a python dictionary object.
    import json
    # Convert a python dict object to JSON string.
    def python_dict_to_json_string():
        # Create a dict object.
        dict_object = dict(name='Richard', age=25, score=100)
        # Call json.dumps method.
        json_string =json.dumps(dict_object)
        # Print JSON string in console.
        print(json_string)
    
    if __name__ == '__main__':
        python_dict_to_json_string()

    Below is the output.

    {"name": "Richard", "age": 25, "score": 100}

1.2 Convert  JSON String To Dict Object.

  1. Create a JSON string.
  2. Call json.loads() method to return the Python dictionary object.
    import json
    # Convert JSON string to python dict.
    def python_json_string_to_dict():
        # Create a JSON string.
        json_string = '{"name": "Tom", "age" : 25, "score" : 100 }'
        # Load the JSON string to python dict object.
        dict_object = json.loads(json_string)
        # Print dict value by key.
        print(dict_object["name"])
        print(dict_object["score"])
        print(dict_object["age"])
    
    if __name__ == '__main__':
        python_json_string_to_dict()

    Below is the output.

    Tom
    100
    25

2. Dump Python Dict To JSON File Or Load Dict From JSON File.

2.1 Dump Dict To JSON File.

  1. Call open method to get a file object.
  2. Call json.dump(dict_object, file_object) to save Python dict object data to JSON file.
    import json
    # Save a python dict object to JSON format file.
    def python_dict_to_json_file(file_path):
        try:
            # Get a file object with write permission.
            file_object = open(file_path, 'w')
    
            dict_object = dict(name='Tom', age=25, score=100)
    
            # Save dict data into the JSON file.
            json.dump(dict_object, file_object)
            print(file_path + " created. ")    
        except FileNotFoundError:
            print(file_path + " not found. ")    
    
    if __name__ == '__main__':
        python_dict_to_json_file("./teacher_data.json")

    When you execute the above code, you can find the teacher_data.json file in the current execution folder.

2.2 Load JSON File Data To Python Dict.

  1. Create a python file object by the open method.
  2. Call json.load method to retrieve the JSON file content to a python dictionary object.
    import json
    # Load JSON file string to python dict.
    def python_json_file_to_dict(file_path):
        try:
            # Get a file object with write permission.
            file_object = open(file_path, 'r')
            # Load JSON file data to a python dict object.
            dict_object = json.load(file_object)
            print(dict_object)    
        except FileNotFoundError:
            print(file_path + " not found. ") 
    
    if __name__ == '__main__':
        python_json_file_to_dict("./teacher_data.json")

3. Python Class Instance Serialize And Deserialize.

Besides serialize/deserialize Python dictionary object between JSON string or file. We can also dump/load any Python class instance between JSON string or file.

3.1 Dump Python Class Instance To JSON String.

  1. Create a python class.
  2. Add a method that can return a python dictionary object based on the class instance.
    # Convert Teacher class instance to a python dict object.     
    def teacher_to_dict(self, teacher):
        dict_ret = dict(name=teacher.name, sex=teacher.sex, age=teacher.age)
        return dict_ret
  3. Call json.dumps(class_instance, default= self.teacher_to_dict) method and set the convert method name to parameter default. If you do not set the default parameter value, it will throw TypeError: Object of type ‘Teacher’ is not JSON serializable error.
    json_string = json.dumps(self,default=self.teacher_to_dict)

3.2 Load JSON String To Python Class Instance.

  1. Create a python class.
  2. Add a method which can return a class instance from loaded python dictionary object.
    # Convert a dict object to a Teacher class instance.    
    def dict_to_teacher(self, dict):
        name = dict['name']
        sex = dict['sex']
        age = dict['age']
        ret = Teacher(name, sex, age)
        return ret
  3. Call json.loads(json_string, object_hook=self.dict_to_teacher) method and pass the method name to the object_hook parameter.
    teacher_object = json.loads(json_string,object_hook=self.dict_to_teacher)

3.3 Dump Python Class Instance To JSON File.

It is similar to the steps in 3.1. The difference is you should call json.dump(class_instance, file_object, default=self.teacher_to_dict)method.

3.4 Load JSON File String To Python Class Instance.

It is similar to the steps in 3.2. The difference is you should call json.load(file_object, object_hook=self.dict_to_teacher)method.

3.5 Python Class Instance And JSON Conversion Example.

import json
# Define a python class.
class Teacher(object):
    # This is the class initialization method.
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age

    # Convert Teacher class instance to a python dict object.     
    def teacher_to_dict(self, teacher):
        dict_ret = dict(name=teacher.name, sex=teacher.sex, age=teacher.age)
        return dict_ret
      
    # Convert a dict object to a Teacher class instance.    
    def dict_to_teacher(self, dict):
        name = dict['name']
        sex = dict['sex']
        age = dict['age']
        ret = Teacher(name, sex, age)
        return ret
      
    # Translate Teacher object to JSON string. 
    def teacher_object_to_json(self):
        json_string = json.dumps(self, default=self.teacher_to_dict)
        print(json_string)
        return json_string

    # Translate JSON string to Teacher object.
    def json_string_to_teacher_object(self, json_string):
        teacher_object = json.loads(json_string, object_hook=self.dict_to_teacher)
        print(teacher_object.name)
        print(teacher_object.sex)
        print(teacher_object.age)
        return teacher_object

    # This method will save Teacher instance data as a JSON string into a file.
    def save_teacher_json_to_file(self, file_path):
        try:
            file_object = open(file_path, 'w')
            json.dump(self, file_object, default=self.teacher_to_dict)
            print("Teacher object has been saved in file " + file_path)
        except FileNotFoundError:
            print(file_path + " not found.")
       
    # This method will load a JSON string from file and return a Teacher class instance.    
    def load_teacher_json_from_file(self, file_path):
        try:
            file_object = open(file_path)
            teacher_object = json.load(file_object, object_hook=self.dict_to_teacher)
            print("name : " + teacher_object.name)
            print("sex : " + teacher_object.sex)
            print("age : " + str(teacher_object.age))
        except FileNotFoundError:
            print(file_path + " not found.")
        
if __name__ == '__main__': 
    # Convert custom python class instance to JSON string.
    teacher = Teacher('Jerry', 'Male', 26)
    print(json.dumps(teacher, default=teacher.teacher_to_dict))

    # Convert JSON string to custom python class instance.
    teacher_json_string = '{"name":"Jerry", "sex":"Male", "age":25}'
    teacher = Teacher('','',1)
    teacher.json_string_to_teacher_object(teacher_json_string)

    teacher = Teacher('Tom', 'Male', 25)
    # Save teacher object to JSON file.
    teacher.save_teacher_json_to_file('./teacher.json')

    # Load teach data from JSON file and return a teacher instance.
    teacher.load_teacher_json_from_file("./teacher.json")
0 0 vote
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
John
John

This post is really helped me a lot. It saved me hundreds of hairs. In my python test file, I use a variable server_json_data to save some JSON format text loaded from a web server for each request, but this is very inefficient.

So I want to save the server returned JSON data in a local file, then I can read the JSON data from the local file instead of connecting to the webserver for each time.

My old function will first open a local file with the open function ( file = open(‘server_json_data.json’, ‘wb’)), then write the server returned json data in it (file.write(server_json_data)) and close the file object.

This is a silly way, it will throw a TypeError which said the write method only can write string or string buffer into a file, can not write a python dict object. Now I know I can use the python json module to implement the same thing, I am very happy about it. Thank you the author.

1
0
Would love your thoughts, please comment.x
()
x