python json对象数组不可序列化

时间:2016-10-03 09:00:03

标签: 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', method=['POST'])
def data():
    for x in list:
        vehicle_sum.append(myclass( x,str(mng01))

    return json.dumps({'success':'1','vehicle':vehicle_sum})

2 个答案:

答案 0 :(得分:3)

是否说myclass对象不是JSON可序列化的?这是因为NSData *postData = UIImageJPEGRepresentation(img, (double)(100-75)/100); 无法知道如何对类进行JSON序列化。您需要写下custom encoder to do that

以下是一个示例实现。我相信你可以根据你的用例修改它。

json.dumps(..)

如果你不想要过于复杂的东西,这就是你能做的:

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}]

答案 1 :(得分:0)

它没有说JSON不可序列化,它表示myclass的实例不是JSON可序列化的。即它们不能表示为JSON,因为它真的不清楚你期望什么作为输出。

要了解如何使类JSON可序列化,请检查以下问题:How to make a class JSON serializable

在这个简单的案例中,根据您尝试实现的目标,您可能会在JSON中插入[x.vehicle for x in vehicle_sum]。如果您确实需要以直接方式在JSON中插入实例数据,则必须编写编码器。

相关问题