您好我已经制作了自定义JSONEncoder,碰巧遇到了这个问题。当我使用simplejson的dumps
函数时,嵌套对象将序列化为字符串。例如,我使用它:
simplejson.dumps({'lat': obj.lat, 'lon': obj.lon})
得到这个:
{
website: "http://something.org",
location: "{"lat": 12.140158037163658, "lon": -86.24754807669069}"
}
如果您看到位置对象是双引号,我可以指定位置对象作为JSON对象正确转储(没有双引号)。
修改
class jsonEncoder(simplejson.JSONEncoder):
def default(self, obj):
isinstance(obj, db.GeoPt):
return simplejson.dumps({'lat': obj.lat, 'lon': obj.lon})
else:
return simplejson.JSONEncoder.default(self, obj)
答案 0 :(得分:4)
当obj是db.GeoPt时,不要从default()返回字符串。相反,使用键'lat'和'lon'返回dict,然后让JSON库序列化dict。
试试这个:
class jsonEncoder(simplejson.JSONEncoder):
def default(self, obj):
if isinstance(obj, db.GeoPt):
return {'lat': obj.lat, 'lon': obj.lon}
else:
return simplejson.JSONEncoder.default(self, obj)