无法转换 json

Cannot convert json

我正在尝试将 flask 请求转换为 json

from flask import request
import json

req_data = request.get_json(force=True)
json_data = json.dumps(req_data)
json.loads(json_data)

但是当我尝试这个时我有:

TypeError: Object of type set is not JSON serializable

你能解释一下吗?

set 类型不可序列化为 JSON。您需要先将其转换为类似 list 的格式:

from flask import request
import json

req_data = request.get_json(force=True)
json_data = json.dumps(list(req_data))
json.loads(json_data)

Repl.it example

默认情况下,json.dumps 使用 conversion table

obj 序列化为 JSON 格式的 str

要扩展它以识别其他对象,请使用另一个方法子类 json.JSONEncoder class and implement a default() 方法,如果可能的话 returns o 的可序列化对象。

>>> import json
>>>
>>> class SetEncoder(json.JSONEncoder):
...     def default(self, o):
...             if isinstance(o, set):
...                     # Do your serailzation here...
...             return json.JSONEncoder.default(self, o)

那么你可以json.dumps(obj, cls=SetEncoder).

例如,

>>> import json
>>> my_obj = {1: {1,2, 3}}
>>>
>>> class SetEncoder(json.JSONEncoder):
...     def default(self, o):
...         if isinstance(o, set):
...             return list(o)
...         return json.JSONEncoder.default(self, o)
...
>>> print(json.dumps(my_obj, cls=SetEncoder))
{"1": [1, 2, 3]}