Tengo un objeto de modelo GeoDjango que no quiero serializar para json. Lo hago en mi opinión:Usando Python simplejson para devolver json pregenerado
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')
El problema es que simplejson
considera la a.area.geojson como una cadena sencilla, aunque es hermosa JSON generado previamente. Esto se puede arreglar fácilmente en el cliente por eval()
's de la cadena de área, pero me gustaría hacerlo de forma adecuada. ¿Puedo decir simplejson
que una cadena en particular ya es json y debería usarse tal como está (y no se devuelve como una cadena simple)? ¿O hay otra solución?
ACTUALIZACIÓN Solo para aclarar, este es el momento de volver JSON:
{
"id": 95,
"name": "Roskilde",
"area": "{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [ 12.078701, 55.649927 ], ... ] ] ] }"
}
El reto es tener "zona" sea un diccionario JSON en lugar de una cadena simple.
"una cadena en particular ya está escrita y debería utilizarse tal como está?" Si ese es el caso, entonces ¿por qué lo haces simplejson enviándolo como tal, no entiendo lo que quieres decir con "json"? ¿Te refieres a un dict? – Prashanth
Quiere decir que a.area.geojson ya es una información json que dice '{"lat": 221.22, "lng": 192.222}'. ¿Cómo puede evitar hacer simplejson.dumps nuevamente? – aatifh
He tratado de aclarar el texto, me doy cuenta de que no estaba muy claro. – friism