什么是 Python JSON 可序列化?

Loo*_*ast 5 python serialization json

我有两种方法来表示Python对象json.dumps()

第一的:

person = {
"name": "John",
"age": 30,
"city": "New York"
}
Run Code Online (Sandbox Code Playgroud)

第二:

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

person = Person("John", 30, "New York")
Run Code Online (Sandbox Code Playgroud)

然后我就尝试了p1 = json.dumps(person),第二种方式就说it's not JSON serializable

那么基本上对于Python来说,json.dumps只适用于像dict对象这样的内置对象?

vai*_*zki 2

是的,json模块只知道如何序列化某些内置类型。使用具有“字段”的类的一种简单方法是dataclasses模块。

例子:

from dataclasses import dataclass, asdict
import json

@dataclass
class Person:
    name: str
    age: int
    city: str

person = Person("John", 30, "New York")
print(json.dumps(asdict(person)))
Run Code Online (Sandbox Code Playgroud)

asdict()函数将数据类实例转换为dict可以json序列化的实例。