web2py json returns 是否有多余的空格,如果有,如何删除

Do web2py json returns have extraneous whitespace, if so, how to remove

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

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

而不是

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

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

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

generic.json 视图调用 gluon.serializers.json,最终从 Python 标准库调用 json.dumps。默认情况下,json.dumps 在分隔符后插入空格。如果您不想要空格,您将无法按原样使用 generic.json 视图。你可以改为:

import json
output = json.dumps(input, separators=(',', ':'))

如果 input 包含一些不可 [​​=30=] 序列化的数据,并且您想利用 gluon.serializers.json 中实现的特殊数据类型转换(即日期时间对象和各种 web2py特定对象),您可以执行以下操作:

import json
from gluon.serializers import custom_json
output = json.dumps(input, separators=(',', ':'), default=custom_json)

使用上面的方法,您可以编辑 generic.json 视图,创建您自己的自定义 JSON 视图,或者直接从控制器 return JSON。

此外,无需担心在 Python 中重新导入模块 -- 解释器只加载模块一次。