Grails JSON 最大长度

Posted

技术标签:

【中文标题】Grails JSON 最大长度【英文标题】:Grails JSON max length 【发布时间】:2011-11-17 19:34:59 【问题描述】:

我知道 JSON 字符串通常在 Apache on php 中定义了最大长度,但是在 Grails 中使用 TomCat 定义的 JSON 字符串的最大长度在哪里?

我发送的 JSON 字符串长度为 13,636 个字符,但是我可以将其缩短很多(虽然我不想在测试时这样做)——而且,我们将来可能会通过 JSON 发送图像我读过需要 base64 编码,因此开销很大。如果我们要做这样的事情,那么我担心如果这个限制造成问题,我们现在应该克服它。

如果没有限制,那么也许我做错了什么。我使用domainInstance as grails.converters.deep.JSON 将有限数量的域对象编码为JSON - 这是使用for 循环完成的,并且每次将JSON 字符串附加到StringBuilder

然后,我使用render(stringBuilder.toString()) 在视图中渲染 StringBuilder,第一个 JSON 字符串很好,但第二个在接近尾声时被截断。如果我猜测一下,我会说我得到了 StringBuilder 总长度的 80% 左右。

编辑/解决方案:抱歉,伙计们,我注意到当我在页面上view source 时,我得到了完整的 JSON 字符串,但是当我只是查看页面时,它被截断了。这是一个奇怪的错误,不过,我会接受为什么会被截断的答案。谢谢。

【问题讨论】:

【参考方案1】:

在 Tomcat 中 有 POST 请求的最大大小,如果您稍后开始发送巨大的 JSON / Base64 图像请求(就像您提到的那样),您可能会担心这个大小。

tomcat 中的默认值为 2,097,152 字节(2 MB);可以通过在 server.xml 中设置<Connector>maxPostSize 属性来更改。

From the docs(用于 Tomcat 7 中的 maxPostSize):

将由 POST 处理的最大字节数 容器FORM URL参数解析。可以通过以下方式禁用限制 将此属性设置为小于或等于 0 的值。如果不是 指定,此属性设置为 2097152(2 兆字节)。

如果您将 Grails 战争部署到独立的 Tomcat 实例,这很容易配置。但是,如果您使用的是 tomcat plugin,我找不到更多关于实际配置 server.xml 的信息。如果是我,我可能只是使用 war 而不是使用 grails run-app 来运行大文件测试。

【讨论】:

干杯罗伯!我目前只使用grails run-app,但在开始部署之前会进行彻底测试。 :)

以上是关于Grails JSON 最大长度的主要内容,如果未能解决你的问题,请参考以下文章

在 Groovy/Grails 中使用 JSON 创建对象

Grails 中视图的 JSON 输出

Grails - 使用 JSON 启动域类

使用 Grails 在服务器端获取 JSON 数据

控制器中每个操作的 JSON Marshaller (Grails)

Grails - 将 UUID 呈现为 JSON