JSON解析错误求助:数组缺少闭合标记(关联Account.roles字段)
分析你的JSON解析错误问题
首先,你贴出来的这段JSON是完全合法的,我用JSON校验工具验证过没问题:
{ "password": "quang97", "username": "quang97", "firstname": "quang97", "lastname": "quang97", "roles": [ "ADMIN" ] }
但报错提示Unexpected end-of-input: expected close marker for Array,还关联到Account["roles"]->java.util.ArrayList[1],这里的关键点是ArrayList[1]——Java的ArrayList索引从0开始,这说明服务器在解析roles数组时,试图读取第二个元素(索引1),但遇到了输入结束,导致数组没闭合。
结合这个报错,我给你梳理几个最可能的原因和排查方向:
- 实际发送的JSON和你贴的不一致:你以为提交的是正确的JSON,但实际传输到服务器的内容被截断了。比如
roles数组可能被写成了["ADMIN",(没写完第二个元素,也没加闭合的]),或者整个JSON的末尾被截断了。建议用请求工具(Postman、curl)或者浏览器开发者工具,查看真正发送到服务器的请求体内容,确认和你预期的一致。 - 请求头或传输问题:检查请求的
Content-Type是否设置为application/json。如果类型不对,服务器可能会用错误的方式解析请求体,导致奇怪的解析错误。另外,也可能是HTTP请求的Content-Length设置不正确,服务器只收到了部分JSON内容就开始解析。 - 代码构造JSON时的错误:如果你是通过代码拼接或序列化生成这个JSON,检查代码逻辑。比如在处理
roles数组时,是不是循环添加元素后没正确闭合数组?或者序列化过程中出现了异常,导致生成的JSON不完整。
给你个快速验证方法:把你贴的这段完整JSON直接用Postman发送给服务器,如果能正常解析,那说明问题肯定出在你平时提交时的内容构造或传输环节,重点排查这两个方向就好。
内容的提问来源于stack exchange,提问作者Văn Quang
相关产品推荐
相关产品推荐

