python json对象数组不可序列化
我有一个循环中的类和数组。我正在填充对象并将其附加到数组中。如何通过JSON将数组数据传递到web端?我有一个错误,说JSON是不可序列化的。如何序列化为JSONpython json对象数组不可序列化,python,json,ajax,serialization,Python,Json,Ajax,Serialization,我有一个循环中的类和数组。我正在填充对象并将其附加到数组中。如何通过JSON将数组数据传递到web端?我有一个错误,说JSON是不可序列化的。如何序列化为JSON class myclass(object): def __init__(self,vehicle,mng01): self.vehicle = vehicle self.vehicle = vehicle #--Main function-- @subApp.route('/jsontry',
class myclass(object):
def __init__(self,vehicle,mng01):
self.vehicle = vehicle
self.vehicle = vehicle
#--Main function--
@subApp.route('/jsontry', method=['POST'])
def data():
for x in list:
vehicle_sum.append(myclass( x,str(mng01))
return json.dumps({'success':'1','vehicle':vehicle_sum})
它是否说myclass对象不可JSON序列化?这是因为
json.dumps(..)
无法知道如何用json序列化类。你需要写你的简历
下面是一个示例实现。我相信您可以根据您的用例修改它
import json
class Temp(object):
def __init__(self, num):
self.num = num
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Temp):
return {"num": obj.num}
#Let the base class handle the problem.
return json.JSONEncoder.default(self, obj)
obj = [Temp(42), Temp(42)]
print json.dumps(obj, cls=CustomEncoder)
#Output: [{"num": 42}, {"num": 42}]
如果你不想让事情变得过于复杂,以下是你可以做的:
all_vehicles = [{"vehicle": x.vehicle} for x in vehicle_sum]
json.dumps({'success':'1','vehicle':all_vehicles)
它并不是说JSON不可序列化,而是说您的
myclass
实例不可JSON序列化。也就是说,它们不能表示为JSON,因为不清楚您希望输出什么
要了解如何使类JSON可序列化,请检查以下问题:
在这个简单的例子中,根据您想要实现的具体目标,您可能需要在JSON中插入
[x.vehicle for x In vehicle\u sum]
。如果你真的需要直接在JSON中插入实例数据,你必须编写一个编码器。什么是mng01?你能举个例子吗?你能发布错误堆栈吗?当我尝试转储{'success':'1','vehicle':vehicle_sum}
时,如果vehicle_sum
是一个标准的python数组,它就会工作。请提供有关错误和您使用的对象的更多详细信息:)@FloranGmehlin:这是myclass
实例的列表。这不是开箱即用的。下面是我的答案:)我明白了,没想到:)谢谢!为什么在myclass.\uuu init\uuuu()
中有两个self.vehicle=vehicle
语句?我得到了一个在json.encoder行162中定义的属性,隐藏了这个方法,它发生在def default(self,obj)行上:
,但代码仍然有效。