/**/

我用的是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

推荐答案

It has to be a string, so you can have:

json.dumps(str(a))

EDIT:

JSON is a format for serialising object data. It doesn't really care or know about Python types, the json package tries to translate whatever object you pass json.dumps() into a string form via a conversion table that only supports some types (see doc below).

这就是为什么我认为传递一个字符串来避免这个问题是个好主意:numpy.float32不在表中.

因为有些人 comments 说,显式地将字符串传递给dumps"听起来是错误的",所以我将在这里添加文档

json.dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) Serialize obj to a JSON formatted str using this conversion table. The arguments have the same meaning as in dump().

Note Keys in key/value pairs of JSON are always of the type str. When a dictionary is converted into JSON, all the keys of the dictionary are coerced to strings. As a result of this, if a dictionary is converted into JSON and then back into a dictionary, the dictionary may not equal the original one. That is, loads(dumps(x)) != x if x has non-string keys.

taken from the official docs here: https://docs.python.org/3/library/json.html

Json相关问答推荐

Scala - 在构建 Json 时无法删除 Key -> value "{}" 大括号的双引号

JQ 中的样本标准偏差

如何在 Django 的模板语言中获取 json 键和值?

如何判断 Json 对象中是否存在键并获取其值

如何在 json 编码字符串内的子数组数据周围添加方括号?

确保数组中的项目属性在 Json Schema 中是唯一的?

如何从 MySQL 中检索 JSON 数据?

Newtonsoft 对象 → 获取 JSON 字符串

Javascript:如何判断 AJAX 响应是否为 JSON

在 .NET 中缩小缩进的 JSON 字符串

有没有一种快速的方法可以在文本编辑器中将 JavaScript 对象转换为有效的 JSON?

通过url获取json数据并在python中使用(simplejson)

我应该如何在http post请求的请求有效负载中传递json数据

Jackson 动态更改 JsonIgnore

MySQL 中的最大 JSON 列长度

转义正则表达式以获取有效的 JSON

获取数组 JSON.Net 的长度

如何删除 json_encode() 函数上的反斜杠?

将 Json 字符串转换为 C# 对象列表

如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?