无法转换 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)
默认情况下,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]}
我正在尝试将 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)
默认情况下,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]}