python - 将 Python namedtuple 序列化为 json

序列化 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}'

https://stackoverflow.com/questions/5906831/

相关文章:

python - 在 Ajax 调用之后使用 Django 模板呈现 JSON 对象

java - gson 抛出 MalformedJsonException

ruby-on-rails - Ruby on Rails - 为多个模型渲染 JSON

javascript - AJAX跨域调用

javascript - 连接两个 JSON 对象

arrays - 通过 JSON 将对象数组发布到 ASP.Net MVC3

asp.net - 如何接收 JSON 作为 MVC 5 操作方法参数

json - 有 JSON 的流 API 吗?

json - 如何不使用 Go 将空结构编码为 JSON?

java - 如何在 java 中使用 org.json.JSONObject 将值设置为 null