Spring JSON 反序列化字符限制

Spring JSON deserialization character limit

我想了解 JSON 框架将反序列化为一个对象的数量是否有限制。

我的 REST 服务收到 POST 请求,其中正文是 JSON 字符串。 Spring 框架 (3.2.5) 将其自动反序列化为一个对象,并且该对象作为方法参数提供。对象的属性之一是数组。我想在我的文档中提供一些关于调用方可以包含在对象中的数组元素的最大数量的指导。

我知道 .NET 框架对 JSON 字符串的大小有一个可配置的限制,但我不知道 Spring 中有任何类似的东西。我的开发服务器目前正在处理一个包含 100,000 个元素(大约 8,000,000 个字符)的请求,而且还没有崩溃。

非常感谢任何想法!

这取决于很多因素,包括

  • 您的底层 JSON 反序列化施加的任何特定限制。很可能您使用的是 Jackson,我知道它没有限制
  • 容器特定限制,您没有提到您使用的是什么容器,但是例如 Tomcat 有一个 maxPostSize.
  • 前端 Web 服务器限制,例如假设 tomcat 在 apache 后面。 Apache 有一个 LimitRequestBody 属性.
  • 内存,特别是将字符串解析为对象的堆大小
  • 时间,反序列化花费很长时间以致客户端的 HTTP 请求超时的边缘情况。

您最有可能首先遇到的限制是特定于容器的限制。我建议使用 container/front 代理配置来设置合理的限制,以保护自己免受不良客户端的侵害。