2

嗨,我制作了一个自定义 JSONEncoder,碰巧遇到了这个问题。当我使用dumpssimplejson 的函数时,嵌套对象被序列化为字符串。例如我使用这个:

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)
4

1 回答 1

4

当 obj 是 db.GeoPt 时,不要从 default() 返回字符串。相反,返回带有键 'lat' 和 'lon' 的字典,并让 JSON 库序列化字典。

尝试这个:

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)
于 2012-09-02T07:18:13.820 回答