web2py json返回有无关的空格,如果是,如何删除

时间:2016-09-09 09:53:42

标签: json whitespace web2py

要检查一下,将python对象更改为JSON的默认JSON视图似乎包含变量之间的空格,即

"field": [[110468, "Octopus_vulgaris", "common octopus"...

而不是

"field":[[110468,"Octopus_vulgaris","common octopus"...

是吗?如果是这样,有没有一个简单的方法来输出JSON而没有额外的空格,这是出于任何原因(除可读性之外)这个坏主意。

我正在尝试使一些API调用返回最快且最简洁的JSON表示,因此任何其他提示都会感激地接受。例如,我看到视图调用from gluon.serializers import json - 每次使用视图时都会重新导入,或者python足够聪明,只能使用一次。我希望后者。

1 个答案:

答案 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中重新导入模块 - 解释器只加载模块一次。