Python嵌套的json对象被序列化为str

时间:2012-09-02 01:57:12

标签: python json simplejson

您好我已经制作了自定义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)

1 个答案:

答案 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)