Home  >  Article  >  Backend Development  >  Python custom class object serialized into Json string (code example)

Python custom class object serialized into Json string (code example)

不言
不言forward
2019-03-06 11:51:443343browse

The content of this article is about serializing Python custom class objects into Json strings (code examples). It has certain reference value. Friends in need can refer to it. I hope It will help you.

I have implemented Python before: deserializing Json strings into custom class objects. This time I will implement Json serialization.

The test code and results are as follows:

import Json.JsonTool
class Score:
    math = 0
    chinese = 0
class Book:
    name = ''
    type = ''
class Student:
    id = ''
    name = ''
    score = Score()
    books = [Book()]
student = Student()
json_data = '{"id":"123", "name":"kid", "score":{"math":100, "chinese":98}, ' \
            '"books":[{"name":"math", "type":"study"}, ' \
            '{"name":"The Little Prince", "type":"literature"}]} '
Json.JsonTool.json_deserialize(json_data, student)
print(student.name)
print(student.score.math)
print(student.books[1].name)
student_str = Json.JsonTool.json_serialize(student)
print(student_str)
input("\n按回车键退出。")

Running results:

kid100The Little Prince
{"books": [{"name": "math", "type": "study"}, {"name": "The Little Prince", "type": "literature"}], "id": "123", "name": "kid", "score": {"chinese": 98, "math": 100}}

按回车键退出。

The implementation code is as follows:

def json_serialize(obj):
    obj_dic = class2dic(obj)
    return json.dumps(obj_dic)


def class2dic(obj):
    obj_dic = obj.__dict__
    for key in obj_dic.keys():
        value = obj_dic[key]
        obj_dic[key] = value2py_data(value)
    return obj_dic


def value2py_data(value):
    if str(type(value)).__contains__('__main__'):
        # value 为自定义类
        value = class2dic(value)
    elif str(type(value)) == "<class &#39;list&#39;>":
        # value 为列表
        for index in range(0, value.__len__()):
            value[index] = value2py_data(value[index])
    return value

The above is the detailed content of Python custom class object serialized into Json string (code example). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:cnblogs.com. If there is any infringement, please contact admin@php.cn delete