解析 JSON 对象时保留字作为数据类中的属性名称

i s*_*eal 6 python json python-3.x python-dataclasses

我在处理 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)
Run Code Online (Sandbox Code Playgroud)

这显然会失败,因为yield是保留的。查看数据类field定义,似乎没有任何可以提供帮助的内容。

Go,允许定义JSON字段的名称,不知道里面有没有这样的功能dataclass

i s*_*eal 5

您可以dataclasses_json从他们的文档中对lib使用不同的名称进行解码/编码:

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"}
Run Code Online (Sandbox Code Playgroud)