要检查一下,将python对象更改为JSON的默认JSON视图似乎包含变量之间的空格,即
"field": [[110468, "Octopus_vulgaris", "common octopus"...
而不是
"field":[[110468,"Octopus_vulgaris","common octopus"...
是吗?如果是这样,有没有一个简单的方法来输出JSON而没有额外的空格,这是出于任何原因(除可读性之外)这个坏主意。
我正在尝试使一些API调用返回最快且最简洁的JSON表示,因此任何其他提示都会感激地接受。例如,我看到视图调用from gluon.serializers import json
- 每次使用视图时都会重新导入,或者python足够聪明,只能使用一次。我希望后者。
答案 0 :(得分:1)
generic.json视图调用gluon.serializers.json
,最终从Python标准库调用json.dumps
。默认情况下,json.dumps
在分隔符后插入空格。如果您不想要空格,您将无法按原样使用generic.json视图。你可以这样做:
import json
output = json.dumps(input, separators=(',', ':'))
如果input
包含一些非JSON序列化的数据,并且您希望利用gluon.serializers.json
中实现的特殊数据类型转换(即datetime对象和各种web2py特定对象),则可以执行以下操作:
import json
from gluon.serializers import custom_json
output = json.dumps(input, separators=(',', ':'), default=custom_json)
使用上面的内容,您可以编辑generic.json视图,创建自己的自定义JSON视图,或直接从控制器返回JSON。
此外,无需担心在Python中重新导入模块 - 解释器只加载模块一次。