from dataclasses import dataclass, field from typing import Optional from dataclasses_json import dataclass_json, config import json import models.target @dataclass_json @dataclass class Rectangle: x: int y: int width: int height: int p: Optional[models.target.Point]= field(default=None, metadata=config(exclude=lambda x: x is None)) # 使用 p=models.target.Point(1,2) rect = Rectangle(0, 0, 100, 100,None) # 序列化 json_str=rect.to_json() # json_str = json.dumps(rect, default=lambda obj: obj.__dict__) print(f"序列化后={json_str}") rect.p.x=2046 print("修改后p.x=",p.x) new_json='{"x": 1, "y": 1, "width": 100, "height": 100, "p": {"x": 2, "y": 2}}' nr=Rectangle.from_json(new_json) print(nr.p)