在python中使用自定义字段名称进行json编码

我有一个 python 脚本,它应该生成一个特定结构的 json 文件。


因此,为了实现这一点,我的计划是创建代表这个 json 文件结构的实体数据类,构造它们,执行生成所需的所有魔法,然后将我的对象转储到 .json 文件中json.dumps(my_object)。


现在我的问题是这个 json 结构有像weird-field:. 由于 python 语法,我无法在数据类中使用“破折号”符号,因此我无法创建代表我的 json 结构的实体类。(这个json文件会被另一个系统使用,所以我没办法改变结构。)


现在我通过使用weird_fieldpython 接受的错误字段名称来解决它,然后在将它们编码为 json 后,我手动替换了 json 字符串中的那些错误字段名称。


我想知道是否有更好的方法来做到这一点。在 java 中,您可以在类中的这些字段上使用特殊注释来说“嘿杰克逊,使用此字符串进行编码而不是类字段的名称”。执行相同操作的python 方法是什么?


在代码中,我想做的是:


@dataclass

class MyClass:

   weird-field: int = 0  # syntax error here 



json_obj = MyClass()

json_obj.weird-field = 621

print(json.dumps(json_obj))

我想得到


{

  weird-field: 621

}

但是它崩溃了,因为 '-' 不能用于 python 中的字段名称。


慕村9548890
浏览 262回答 1
1回答

MMTTMM

使用字典。json_obj = dict()json_obj['weird-field'] = 621my_weird_value = json_obj['weird-field'] # returns 621print(json.dumps(json_obj))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python