【发布时间】:2016-01-21 03:52:03
【问题描述】:
更新:当您使用 chrome 浏览器访问生成 JSON 作为输出的页面时。显示不正确的结果。
考虑这个产生 json 的 django 代码。当您json.dumps 和long 时,这两位数字与预期值不同。代码如下:
from django.http import JsonResponse, HttpResponse
import json
def dumps1(request):
return JsonResponse({'pk': 456011173705795438 })
def dumps2(request):
return HttpResponse(json.dumps({'pk': 455928532169112023 }))
当然,您会期望 dumps1 返回,HttpResponse 的主体为 {'pk': 456011173705795438 } 而 dumps2 应该返回 {'pk': 455928532169112023 } 但实际结果是
{
pk: 456011173705795460
}
和
{
pk: 455928532169112000
}
请注意,在这两种情况下,数字中的最后两位数字都已更改。如果你打开 django shell 并输入 json.dumps({'pk': 455928532169112023 }) 就会产生正确的输出。
Django 1.8.5 和 python 2.7.6 (ipython 4.0.b1)
这是错误还是功能?
【问题讨论】:
-
我刚刚打开 python shell 并这样做了: >>>from django.http import JsonResponse, HttpResponse >>>import json >>>j = JsonResponse({'pk': 455928532169112023 }) > >>h = HttpResponse(json.dumps({'pk': 455928532169112023 })) >>>for i in j: print i >>>for i in h: print i ----------- - 都打印了 b'{"pk": 455928532169112023}' 这是正确的值。当你执行我在你的 shell 中执行的命令时,它会给出相同的输出吗?
-
是的@user2719875 这是越来越好奇,你的方法返回正确的值
-
@user2719875 我找到了答案,但感谢您的评论,这帮助我找到了答案。你会把它作为答案发布吗?我会放弃投票。
标签: python json django google-chrome