python json对象数组不可序列化

python 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',

我有一个循环中的类和数组。我正在填充对象并将其附加到数组中。如何通过JSON将数组数据传递到web端?我有一个错误,说JSON是不可序列化的。如何序列化为JSON

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)行上:
,但代码仍然有效。