📜  python 类 json 可序列化 - Javascript (1)

📅  最后修改于: 2023-12-03 14:46:17.564000             🧑  作者: Mango

Python 类 json 可序列化 - JavaScript

简介

在 Python 中,JSON(JavaScript Object Notation)是一种常用的数据交换格式。Python 提供了内置的 json 模块用于处理 JSON 数据。JSON 可以表示字符串、数字、布尔值、列表、字典以及它们的嵌套组合。

在 Python 中使用 json 模块将 Python 对象序列化为 JSON 字符串可以实现数据的存储和传输。同样地,可以将 JSON 字符串反序列化为 Python 对象来进行数据处理和解析。

JSON 序列化

Python 中的类可以通过两种方式进行 JSON 序列化:

  1. 实现 json.JSONEncoder 类的 default() 方法来自定义序列化行为。
  2. 在类中定义 __dict__ 方法,使类的实例对象可被直接序列化。

下面的示例演示了如何序列化一个 Python 类为 JSON 字符串:

import json

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

person = Person("Alice", 25)
json_string = json.dumps(person.__dict__)
print("Serialized JSON string:", json_string)

上述代码中,我们定义了一个 Person 类,其中包含名字和年龄属性。通过 json.dumps() 方法将 person.__dict__ 对象转换成 JSON 字符串。输出结果如下:

Serialized JSON string: {"name": "Alice", "age": 25}
JSON 反序列化

与序列化相对应,可以使用 json 模块将 JSON 字符串反序列化为 Python 类的实例对象。

下面的示例演示了如何反序列化 JSON 字符串为 Python 类的实例:

import json

json_string = '{"name": "Alice", "age": 25}'
person_dict = json.loads(json_string)
person = Person(**person_dict)
print("Deserialized person object:", person.__dict__)

上述代码使用 json.loads() 方法将 JSON 字符串转换为 Python 字典对象,并将其传递给 Person 类的构造函数来创建一个 person 对象。输出结果如下:

Deserialized person object: {'name': 'Alice', 'age': 25}
注意事项

在进行类的 JSON 序列化和反序列化时,需要注意以下几点:

  • 类必须定义为干净的数据对象,即没有复杂的方法和属性。
  • 类中的属性必须是可 JSON 序列化的类型,例如字符串、数字、列表、字典等。
结论

通过 json 模块可以方便地将 Python 类序列化为 JSON 字符串,并将 JSON 字符串反序列化为 Python 类的实例对象。这使得数据的存储和传输变得更加灵活和方便。