序列化
1. json
python
import json
json.dumps(dict | list, indent=2) # 编码
json.loads(str) # 解码重写 json 类实现 datetime 的输出
py
class DateEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime.datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
else:
return json.JSONEncoder.default(self, obj)
json.dumps(xxx, cls=DateEncoder)2. tomllib
只能读。
py
import tomllib
data = tomllib.loads('a = "A"\nb = 2')3. pyyaml
sh
pip install pyyamlpython
import yaml
yaml.dump(dict | list).encode('utf-8').decode('unicode_escape') # 编码
yaml.load(str, Loader=yaml.SafeLoader) # 解码4. dataclass 和 dict 的转换
dict -> dataclass 需要 dacite 库:
sh
pip install dacitepy
from dataclasses import dataclass, asdict
import json
from dacite import from_dict
@dataclass
class Person:
@dataclass
class Address:
city: str
name: str
address: Address
p = Person("Bob", Person.Address("NYC"))
d = asdict(p)
p2 = from_dict(data_class=Person, data=d)