解析 JSON 对象时作为数据类中的属性名称的保留字
Reserved word as an attribute name in a dataclass when parsing a JSON object
我在处理 ETL 管道时偶然发现了一个问题。我正在使用数据类 dataclass
来解析 JSON 对象。 JSON 对象的关键字之一是保留关键字。有没有办法解决这个问题:
from dataclasses import dataclass
import jsons
out = {"yield": 0.21}
@dataclass
class PriceObj:
asOfDate: str
price: float
yield: float
jsons.load(out, PriceObj)
这显然会失败,因为 yield
已保留。查看数据类 field
定义,其中似乎没有任何帮助。
去,允许定义JSON字段的名称,不知道dataclass
有没有这样的功能?
您可以使用来自 docs:
的 dataclasses_json
库的不同名称进行解码/编码
from dataclasses import dataclass, field
from dataclasses_json import config, dataclass_json
@dataclass_json
@dataclass
class Person:
given_name: str = field(metadata=config(field_name="overriddenGivenName"))
Person(given_name="Alice") # Person('Alice')
Person.from_json('{"overriddenGivenName": "Alice"}') # Person('Alice')
Person('Alice').to_json() # {"overriddenGivenName": "Alice"}
我在处理 ETL 管道时偶然发现了一个问题。我正在使用数据类 dataclass
来解析 JSON 对象。 JSON 对象的关键字之一是保留关键字。有没有办法解决这个问题:
from dataclasses import dataclass
import jsons
out = {"yield": 0.21}
@dataclass
class PriceObj:
asOfDate: str
price: float
yield: float
jsons.load(out, PriceObj)
这显然会失败,因为 yield
已保留。查看数据类 field
定义,其中似乎没有任何帮助。
去,允许定义JSON字段的名称,不知道dataclass
有没有这样的功能?
您可以使用来自 docs:
的dataclasses_json
库的不同名称进行解码/编码
from dataclasses import dataclass, field
from dataclasses_json import config, dataclass_json
@dataclass_json
@dataclass
class Person:
given_name: str = field(metadata=config(field_name="overriddenGivenName"))
Person(given_name="Alice") # Person('Alice')
Person.from_json('{"overriddenGivenName": "Alice"}') # Person('Alice')
Person('Alice').to_json() # {"overriddenGivenName": "Alice"}