我在循环中有一个类和数组。我正在填充对象并将其附加到数组中。如何通过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})
答案 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中插入实例数据,则必须编写编码器。