当前位置: 首页 > 知识库问答 >
问题:

404Spring控制器错误,如果JSON字符串包含的数字大于10位

景唯
2023-03-14

我有一个控制器,它在请求正文中获取json作为字符串,如下所示

@PostMapping("/addUser")
public ResponseEntity<?> addUser (@RequestBody String userJson,HttpServletRequest request) {
   log.info("inside add user controller")
   String responseStatus = serviceInterface.addUser (userJson);
   return new ResponseEntity (responseStatus);
}

请求正文为

{
 "user": {
   "username": "testuser",
   "userId": 12345678901233,
   "phonenumber": "9876756475",
   "emailaddress": "test@org.com"
 }
}

我面临的问题是,当userId属性的位数超过10位时,控制器返回404错误,请求甚至无法到达控制器,但如果我将位数减少到10以下,比如说123456789,我将得到实际的预期响应。我之所以将请求主体保留为字符串,是因为有时请求可能是graphql字符串或JSON字符串,但这两种情况都会发生。

共有3个答案

吴欣然
2023-03-14

这背后可能的原因是用于usedId的数据类型。

对于int,范围是直到2147483647,请尝试将数据类型更改为long,其范围是直到9223372036854775807

羊煜
2023-03-14

尝试将其改为长类型。

int的最大值是2147483647,而Long9223372036854775807

邵绪
2023-03-14

这可能是因为java中整数的范围,即用户ID字段的类型。

java中int的范围是-2147483648。。2147483647。

因此,请尝试在该范围内和范围外,并检查它是否适用于该范围,而不适用于超出范围,这就是问题所在。

在这种情况下,您必须将int更改为long数据类型。

 类似资料:
  • 问题内容: 我有以下Angular代码: 如何使用ng-if条件查找特定字符: 只在字符在这里时显示代码?我的值是88?77,数字是动态的,但问号始终存在,我似乎无法基于此进行过滤? 问题答案: ES2015更新 ES2015具有检查字符串是否包含另一个字符串的方法。如果目标环境支持,则可以使用它。如果在 干草堆中 找到了 针, 则该方法返回,否则返回。 __ 在这里是要搜索的字符串。 请参阅MD

  • 问题内容: 我遇到了三个UTF-8刺痛: 我只想要前10个ascii-char-width,这样一栏中的括号即可: 在控制台中: 一个中文字符是三个字节,但是在控制台中显示时,它只有2个ascii字符宽度: 当UTF-8字符混入时,python并没有帮助 这不是很漂亮: -----------Songs----------- |1: Butterfly| |2: city of heart| |3

  • 问题内容: 例如,需要使用 字符串找出只读取字符串中 数字 的方法, 即 我的尝试 问题答案: 试试这个: 由于返回的是文本数组,因此您应该通过来访问第一个元素。

  • 问题内容: 使用JSON-lib时,如何阻止该方法存储包含JSON的字符串作为JSON而不是转义字符串? 例如: 印刷品: 我希望它打印: 是的,我意识到这很令人讨厌。但是,这是为了支持JSON序列化管道,出于互操作性的考虑,这是预期的行为。在某些情况下,我们会序列化可能是/包含有效JSON的用户输入。我们不希望用户输入成为将输入序列化的JSON对象的一部分。 手动转义不起作用,因为它会导致JSO

  • 嗨,我有一个Spring mvc控制器 我想看看当我运行这个时JSON字符串会是什么样子。我写了这个测试用例 如何获取JSON字符串? 我用的是Spring 3,codehause Jackson 1.8.4

  • 问题内容: 当我使用pg_query,pg_fetch_assoc从PostgreSQL数据库获取数据时,所有数字字段都以字符串形式返回。有没有解决的办法,还是我必须按照自己的方式对每个字段进行类型转换? 问题答案: 这就是PHP所做的。从手册: 数组中的每个值都表示为一个字符串。