【问题标题】:Python: Interesting json.dumps serialization quirkPython:有趣的 json.dumps 序列化怪癖
【发布时间】:2014-04-04 20:46:05
【问题描述】:

我有一个相当复杂的字典,我想将其转换为 JSON 对象。

dataj = json.dumps(post_data)

我收到以下错误:

TypeError: 6 is not JSON serializable

但是,如果我打印我的字典:

print post_data

然后我将这个 post_data 复制/粘贴回同一个变量中:

post_data = pasted data

Json.dumps 有效。不知道为什么会发生这种情况,但我怀疑它与复制文本并将其粘贴回时的正确换行符有关。有什么办法可以避免这样做?

【问题讨论】:

  • 你在使用 NumPy 之类的库吗?我发现许多 NumPy 类型不是 JSON 可序列化的,即使它们看起来像原始数字。
  • 我相信我的一些 int 是 numpy ints 是的 - 在我复制和粘贴之后这些会转换为原始数字吗?
  • 是的,就是这样。我会考虑自动转换这些的方法。

标签: json python-2.7 numpy


【解决方案1】:

看起来你正在使用 NumPy;我以前遇到过这个问题。

printing 时,

NumPy 将不可序列化的 primitive-like 数据类型表示为原始数据类型。当您复制并粘贴输出时,您将获取该文本并将其作为实际原语重新输入(当然,它是 JSON 可序列化的)。

所以您基本上有 2 个选择:将代码重构为 use NumPy's .tolist()(和相关函数)或 enhance the JSON serializer 以接受 NumPy 数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2010-12-28
    • 2017-02-17
    • 2023-03-19
    • 2014-02-04
    相关资源
    最近更新 更多