最近刚接触到python,就想到了如何反序列化json串。网上找了一下,大部分都是用json模块反序列化为python数据结构(字典和列表)。如果对json模块不了解的参考菜鸟教程。然后我在此基础上将python数据转换为了自定义类对象。
下面是测试代码及运行结果:

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

运行结果:

    kid100The Little Prince按回车键退出。

实现代码如下:

import jsondef json_deserialize(json_data, obj):py_data = json.loads(json_data)dic2class(py_data, obj)def dic2class(py_data, obj):for name in [name for name in dir(obj) if not name.startswith('_')]:if name not in py_data:setattr(obj, name, None)else:value = getattr(obj, name)setattr(obj, name, set_value(value, py_data[name]))def set_value(value, py_data):if str(type(value)).__contains__('.'):# value 为自定义类dic2class(py_data, value)elif str(type(value)) == "<class 'list'>":# value为列表if value.__len__() == 0:# value列表中没有元素,无法确认类型value = py_dataelse:# value列表中有元素,以第一个元素类型为准child_value_type = type(value[0])value.clear()for child_py_data in py_data:child_value = child_value_type()child_value = set_value(child_value, child_py_data)value.append(child_value)else:value = py_datareturn value

Python: Json串反序列化为自定义类对象相关推荐

  1. JSON字符串封装成Bean对象/JSON串反序列化成实体类对象/JSON字符串转换成Java对象

    文章目录 使用阿里巴巴的 JSON 使用 ObjectMapper JSON字段与实体类属性不一致 首先,我们建立一个实体类,这里简单定义了 name.sex.age 三个属性,以及 get.set. ...

  2. Python: 自定义类对象序列化为Json串

    之前已经实现了Python: Json串反序列化为自定义类对象,这次来实现了Json的序列化. 测试代码和结果如下: import Json.JsonToolclass Score:math = 0c ...

  3. python类定义中、对象字符串的特殊方法是_python中自定义类对象json字符串化的方法_python json转字符串、...

    python中自定义类对象json字符串化的方法 1. 用 json 或者simplejson 就可以 2.定义转换函数: def convert_to_builtin_type(obj): prin ...

  4. JSON串转化为List

    JSON串转化为List JSON的两种格式 "方括号"格式转化 "花括号"格式转换 JSON的两种格式 第一种: [[value1, value2, valu ...

  5. gson java 对象_Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

  6. JSON字符串转为指定实体类对象

    创建JsonStringToClass对象即可 package utils;import net.sf.json.JSONArray; import net.sf.json.JSONObject;im ...

  7. redis python 出错重连_python穿透类 对象代理

    # coding:utf-8 import os import logging # 对象代理 # 用于解决需要在包调用与业务代码之间增加一些其他操作的场景 # 比如:应用程序中使用redis包对象,我 ...

  8. jackson java反序列化_java – Jackson JSON强制反序列化为对象

    我得到了一个代表团的课程设置 public class MyClass implements List { public String name; public List target; // thi ...

  9. python json串中文乱码问题

    第一种: #!/usr/bin/env python # -*- coding: utf-8 -*- import json dic = {} abc="我爱你" bcd=&quo ...

最新文章

  1. 【测试点分析】1104 Sum of Number Segments (20 分)
  2. 数据库:推荐几款 Redis 可视化工具,你都用过吗?
  3. 数据结构思维 第十四章 持久化
  4. 在计算机中添加用户名和密码是多少,在win7系统中添加网络打印机提示输入用户名和密码的解决方案...
  5. 探索软件设计模式(二)
  6. FREETYPE旋转功能初探
  7. 微信打飞机游戏(python)
  8. 虚拟机安装LEDE之后如何配置连接互联网
  9. 【渝粤题库】广东开放大学 质量管理 形成性考核
  10. 电脑重启只剩下c盘怎么办_电脑突然只剩下c盘了怎么办?
  11. 有哪些简洁的人生建议?
  12. SLG手游的战斗抽象
  13. 粒子的散射模拟matlab程序,基于Matlab的α粒子的散射实验模拟.pdf
  14. 近世代数--特征--环的特征,域的特征
  15. JavaScript-快速入门
  16. C语言中 .c 和 .h 文件有什么关系?
  17. 【深度学习/机器学习】为什么要归一化?归一化方法详解
  18. 示波器探头如何连接设备?
  19. Good Bye 2022: 2023 is NEAR C. Koxia and Number Theory
  20. Distilled Dual-Encoder Model for Vision-Language Understanding

热门文章

  1. ClickHouse【环境搭建 02】设置用户密码的两种方式(明文+SHA256)及新用户添加及只读模式 Cannot execute query in readonly mode 问题解决
  2. 07丨行锁功过:怎么减少行锁对性能的影响
  3. cdh jar包 sqoop2_安装sqoop1.4.6-cdh5.5.2
  4. 用python写名字代码_用python编写一个批量修改文件名的小程序
  5. HMTL/CSS——下拉菜单DEMO
  6. Java基础-内部类
  7. WordPress上传大小限制问题
  8. showModalDialog弹窗
  9. xcode 写代码没有补全 提示
  10. 块语法Block在MVC思维的妙用之多重M层代理传值