python - 将 Python namedtuple 序列化为 json

标签 python json namedtuple

序列化 namedtuple 的推荐方法是什么?保留字段名称的json?

namedtuple 序列化为 json 只会导致值被序列化并且字段名称在翻译中丢失。我希望在 json 化时也保留这些字段,因此执行以下操作:

class foobar(namedtuple('f', 'foo, bar')):
    __slots__ = ()
    def __iter__(self):
        yield self._asdict()

上面的内容按照我的预期序列化为 json,并且在我使用的其他地方(属性访问等)表现为 namedtuple,除了在迭代它时出现非元组的结果(这对我来说很好用例)。

在保留字段名的情况下转换为json的“正确方法”是什么?

最佳答案

如果您要序列化的只是一个 namedtuple,则可以使用其 _asdict() 方法(使用 Python >= 2.7)

>>> from collections import namedtuple
>>> import json
>>> FB = namedtuple("FB", ("foo", "bar"))
>>> fb = FB(123, 456)
>>> json.dumps(fb._asdict())
'{"foo": 123, "bar": 456}'

关于python - 将 Python namedtuple 序列化为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906831/

相关文章:

python - Celery - 任务重试导致奇怪的错误

python - 尝试在 Python 的线性模型的 PanelOLS 函数中包含固定效应时,如何修复吸收效应错误?

javascript - 将 JSON 字符串发布到 ASP.NET MVC 3 操作导致空参数

javascript - 显示与 JSON 数据的 'Open Hours' 日期/时间对齐的 div

python - 有没有一种优雅的方法来使用 struct 和 namedtuple 而不是这个?

python - 如何在Python3.7/3.8中使用通用namedtuple?

Python:复制具有相同属性/字段的命名元组

python - 为 Python 3 使用 pyping 时没有名为 'core' 的模块

python - 如何使用 python 使用新的给定元素更新现有的 xml 元素?

javascript - 从 PHP 解析 javascript 中的 JSON 时出现问题