【发布时间】:2011-01-02 21:58:35
【问题描述】:
我有一个不想序列化为 json 的 GeoDjango 模型对象。我认为这样做:
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()'ing 区域字符串在客户端中修复,但我想正确地做到这一点。我可以告诉simplejson 一个特定的字符串已经是 json 并且应该按原样使用(而不是作为简单字符串返回)吗?还是有其他解决方法?
更新 澄清一下,这是当前返回的 json:
{
"id": 95,
"name": "Roskilde",
"area": "{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [ 12.078701, 55.649927 ], ... ] ] ] }"
}
挑战是让“区域”成为一个 json 字典而不是一个简单的字符串。
【问题讨论】:
-
“一个特定的字符串已经是 json 并且应该按原样使用?” 如果是这种情况,那么你为什么要这样做 simplejson 发送它,我不明白你所说的已经 json 是什么意思?你是说字典?
-
他的意思是 a.area.geojson 已经是一个 json 数据,比如 '{"lat": 221.22, "lng": 192.222}'。他怎么能避免再次做simplejson.dumps?
-
我试图澄清文本,但我意识到它不是很清楚。
-
那么,你试过
simplejson.loads吗? -
我猜,既然他不想做eval,他可能也不想做.loads
标签: python django json geodjango simplejson