Python中复杂对象序列化为JSON的完整指南

Miles
Miles
发布时间:2026-10-13 | 2人浏览过
原创

本文详解Python中将复杂对象转换为JSON字符串的方法。针对简单字典,直接使用json.dumps即可;对于包含自定义类的复杂结构,需通过定义__repr__及利用json.dumps的default参数调用__dict__来实现序列化。文章提供了完整代码示例、输出结果及在线工具推荐,帮助开发者掌握Python JSON处理的核心技巧。

本文详细介绍在Python环境中将复杂对象转换为JSON格式的实现方案,旨在为读者提供实用的参考代码与解析思路。

在Python中,将结构简单的对象(如字典、列表等)转换为JSON字符串通常非常直观且易于操作。具体实现方式如下所示:

import json
d = {'a': 'aaa', 'b': ['b1', 'b2', 'b3'], 'c': 100}
json_str = json.dumps(d)
print json_str

当面对包含自定义类或嵌套结构的复杂对象时,直接序列化可能会遇到类型不支持的问题。此时,可以通过以下方法实现自定义对象的JSON转换,例如处理包含多个属性的类实例:

import json
class Customer:
  def __init__(self, name, grade, age, home, office):
    self.name = name
    self.grade = grade
    self.age = age
    self.address = Address(home, office)
  def __repr__(self):
    return repr((self.name, self.grade, self.age, self.address.home, self.address.office))
class Address:
  def __init__(self, home, office):
    self.home = home
    self.office = office
  def __repr__(self):
    return repr((self.name, self.grade, self.age))
customers = [
    Customer('john', 'A', 15, '111', 'aaa'),
    Customer('jane', 'B', 12, '222', 'bbb'),
    Customer('dave', 'B', 10, '333', 'ccc'),
    ]
json_str = json.dumps(customers, default=lambda o: o.__dict__, sort_keys=True, indent=4)
print json_str

执行上述代码后,得到的JSON输出结果如下所示:

[
  {
    "address": {
      "home": "111",
      "office": "aaa"
    },
    "age": 15,
    "grade": "A",
    "name": "john"
  },
  {
    "address": {
      "home": "222",
      "office": "bbb"
    },
    "age": 12,
    "grade": "B",
    "name": "jane"
  },
  {
    "address": {
      "home": "333",
      "office": "ccc"
    },
    "age": 10,
    "grade": "B",
    "name": "dave"
  }
]

补充说明:为了方便进行JSON数据的处理与调试,这里推荐几款实用的在线JSON工具供参考:

在线JSON代码检验、校验、美化及格式化工具: http://tools.jb51.net/code/json

JSON在线格式化工具: http://tools.jb51.net/code/jsonformat

在线XML与JSON互相转换工具: http://tools.jb51.net/code/xmljson

JSON代码在线格式化、美化、压缩、编辑及转换工具: http://tools.jb51.net/code/jsoncodeformat

在线JSON压缩及转义处理工具: http://tools.jb51.net/code/json_yasuo_trans

如需深入了解Python其他相关操作,建议查阅本站专题:《Python操作json技巧总结》、《Python编码操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。

希望本文提供的解决方案能对您的Python编程工作有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表