博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python: 自定义类对象序列化为Json串
阅读量:4699 次
发布时间:2019-06-09

本文共 1473 字,大约阅读时间需要 4 分钟。

    之前已经实现了,这次来实现了Json的序列化。

    测试代码和结果如下:

import Json.JsonToolclass Score:    math = 0    chinese = 0class 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按回车键退出。")

运行结果:

kid100The Little Prince{
"books": [{
"name": "math", "type": "study"}, {
"name": "The Little Prince", "type": "literature"}], "id": "123", "name": "kid", "score": {
"chinese": 98, "math": 100}}按回车键退出。

 

    实现代码如下:

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_dicdef value2py_data(value):    if str(type(value)).__contains__('.'):        # value 为自定义类        value = class2dic(value)    elif str(type(value)) == "
": # value 为列表 for index in range(0, value.__len__()): value[index] = value2py_data(value[index]) return value

 

转载于:https://www.cnblogs.com/magic8sky/p/10482073.html

你可能感兴趣的文章
『开发技术』Windows极简安装使用face_recognition实现人脸识别
查看>>
『深度应用』NLP命名实体识别(NER)开源实战教程
查看>>
『开发技术』GPU训练加速原理(附KerasGPU训练技巧)
查看>>
『深度应用』NLP机器翻译深度学习实战课程·壹(RNN base)
查看>>
『深度应用』一小时教你上手MaskRCNN·Keras开源实战(Windows&Linux)
查看>>
『王霸之路』从0.1到2.0一文看尽TensorFlow奋斗史
查看>>
『TensorFlow2.0正式版教程』极简安装TF2.0正式版(CPU&GPU)教程
查看>>
sql server 2008 自动备份
查看>>
sqlalchemy根据数据库结构生成映射的实体
查看>>
环形数组的组最大字数组求法
查看>>
SQL命令建表
查看>>
图片上传预览 支持html5的浏览器
查看>>
开源框架收集
查看>>
[恢]hdu 2027
查看>>
论文-GoogleNet : Going Deeper with Convolutions
查看>>
51Nod - 1247 可能的路径
查看>>
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h:No such file or directory的解决办法
查看>>
Linux总结--vi与vim
查看>>
Centos6 日常使用小结
查看>>
IOS开发之申请测试证书的步骤
查看>>