문제

Hi I have made a custom JSONEncoder and happened to run into this issue. When I use the dumps function of simplejson the nested object gets serialize as a string. For example I use this:

simplejson.dumps({'lat': obj.lat, 'lon': obj.lon})

And get this:

{
website: "http://something.org",
location: "{"lat": 12.140158037163658, "lon": -86.24754807669069}"
}

If you see location object is with double quotes is there a way I can specify location object to be dump properly as a JSON object (without the double quotes).

Edit

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)
도움이 되었습니까?

해결책

Don't return a string from default() when obj is a db.GeoPt. Instead, return the dict with keys 'lat' and 'lon', and let the JSON library serialize the dict.

Try this:

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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top