Fra*_*olo 13 python json numpy
我正在处理numpy.float32数字,但它们不适用JSON。解决此问题的正确方法是什么?
import numpy as np
import json
a = np.float32(1)
json.dumps(a)
TypeError: Object of type 'float32' is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
ven*_*lac 14
它必须是一个字符串,因此您可以拥有:
json.dumps(str(a))
Run Code Online (Sandbox Code Playgroud)
编辑:
JSON是用于序列化对象数据的格式。它并不真正在乎或不了解Python类型,json包尝试json.dumps()通过conversion table仅支持某些类型的a 将您传递的任何对象转换为字符串形式(请参见下面的文档)。
这就是为什么我认为只传递一个字符串来避免此问题的一个好主意的原因:numpy.float32只是不在表中。
因为有些人评论说,将字符串显式传递给dumps“听起来错误”,所以我将在此处添加文档
json.dumps(obj,*,skipkeys = False,确保使用此转换表转换为JSON格式的str。这些参数与dump()中的含义相同。
注意JSON的键/值对中的键始终为str类型。当字典转换为JSON时,字典的所有键都被强制转换为字符串。结果,如果将字典转换为JSON,然后又转换回字典,则该字典可能不等于原始字典。也就是说,如果x具有非字符串键,那么load(dumps(x))!= x。
取自此处的官方文档:https : //docs.python.org/3/library/json.html
| 归档时间: |
|
| 查看次数: |
15597 次 |
| 最近记录: |