【问题标题】:TypeError: {1, 3} is not JSON serializableTypeError: {1, 3} 不是 JSON 可序列化的
【发布时间】:2017-02-17 10:47:34
【问题描述】:

我是 Python 的初学者,我对 JSON 有一点问题。在我正在使用的教程中,有两个函数:

def read_json(filename):
    data = []
    if os.path.isfile(filename):
        with open(filename, "r") as f:
            data = json.load(f)
    return data


def save_json(filename, data):
    with open(filename, "w") as f:
        json.dump(data, f)

但是当我尝试保存我的数据时,保存时出错:

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: {1, 3} is not JSON serializable

有人可以帮助我吗?

【问题讨论】:

  • 您能否发布您正在写入的示例 json 数据并检查您正在写入文件的类型(数据)。

标签: python json python-3.x serialization set


【解决方案1】:

{1, 3} 是一个set,正如错误所指出的,它不能被序列化为 JSON - JSON 中唯一的集合 types 是列表(在 JSON 中称为数组)和字典(在 JSON 中称为对象)。

您需要将其转换为列表:

converted = list(my_data)
save_json(my_filename, converted)

【讨论】:

  • 很高兴听到这个消息。如果您愿意,您可以accept 一个答案,通过单击它旁边的复选标记来解决您的问题……这让其他人知道该解决方案有效。
  • 当然。我会做的。
猜你喜欢
  • 2014-08-13
  • 2015-02-25
  • 1970-01-01
  • 2017-10-24
  • 2016-08-02
  • 2019-02-08
  • 2013-05-11
  • 2019-09-01
  • 1970-01-01
相关资源
最近更新 更多