У меня есть объект модели GeoDjango, который я не хочу сериализовать для json. Я делаю это, на мой взгляд:Использование Python simplejson для возврата pregenerated json
lat = float(request.GET.get('lat'))
lng = float(request.GET.get('lng'))
a = Authority.objects.get(area__contains=Point(lng, lat))
if a:
return HttpResponse(simplejson.dumps({'name': a.name,
'area': a.area.geojson,
'id': a.id}),
mimetype='application/json')
Проблема заключается в том, что simplejson
рассматривает a.area.geojson как простой строки, даже если это красиво предварительно созданные в формате JSON. Это легко устанавливается клиентом на eval()
, но я хотел бы сделать это правильно. Могу ли я указать simplejson
, что конкретная строка уже json и должна использоваться как-is (а не возвращена как простая строка)? Или есть другое обходное решение?
UPDATE Просто чтобы прояснить, это в настоящее время возвращается в формате JSON:
{
"id": 95,
"name": "Roskilde",
"area": "{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [ 12.078701, 55.649927 ], ... ] ] ] }"
}
Задача состоит в том, чтобы иметь «область» быть JSON словарь вместо простой строки.
«конкретная строка уже используется json и должна использоваться как-есть?» Если это так, то почему вы делаете simplejson, отправляйте ее как таковой, я понимаю, что вы имеете в виду уже json? Ты имеешь в виду диктофон? – Prashanth
Он означает, что a.area.geojson alread json data say '{"lat": 221.22, "lng": 192.222}'. Как он может избежать лишних попыток? – aatifh
Я попытался прояснить текст, я понимаю, что это было не очень ясно. – friism