JSON报“JSON Data is Not Valid”解析错误排查
JSON 语法报错定位:第66行解析失败 "JSON Data is Not Valid"
错误原因
报错直接触发点是InfoStr字段的写法不符合JSON语法规范:该字段值是被双引号包裹的字符串,但字符串内部的双引号没有做转义处理,JSON解析器读取到字符串内部第一个双引号时,会直接判定InfoStr的字符串值已经结束,后续的BankEftCode等内容成为游离的无效token,最终触发解析错误。
你当前错误写法的关键片段:
"InfoStr":"[{"BankEftCode":"1234567890",......}]"
解析器读取逻辑:
- 读到
"InfoStr":"确认开始解析字符串值 - 读到
[{属于字符串内正常字符,继续解析 - 读到
BankEftCode前面的"判定字符串结束 - 后续的
BankEftCode没有匹配的语法规则,直接抛出你看到的解析错误
修复方法
根据业务需求二选一即可:
- 方案1:如果
InfoStr字段业务定义为字符串类型(存储序列化后的JSON文本),将字符串内部所有双引号前加反斜杠\转义
修复后字段示例:"InfoStr":"[{\"BankEftCode\":\"1234567890\",\"TaskId\":\"12345\",\"RequestUser\":\"aaa aaa\",\"ResponseUser\":\"aaa01\",\"RequestTimestamp\":\"1234567890\",\"ResponseTimestamp\":\"134567\",\"RequestComment\":\"aaaa\",\"ResponseComment\":\"aaa\", \"InfoElements\":[{\"Key\":\"AtmCashDifferenceCurrency\",\"Value\":null,\"Type\":null}, {\"Key\":\"AtmCashSurplus\",\"Value\":\"0\",\"Type\":null} ] }]" - 方案2:如果
InfoStr不需要存储纯文本,直接存储结构化数组即可,去掉包裹数组内容的外层双引号,无需转义内部双引号
修复后字段示例:"InfoStr":[{"BankEftCode":"1234567890","TaskId":"12345","RequestUser":"aaa aaa","ResponseUser":"aaa01","RequestTimestamp\":\"1234567890","ResponseTimestamp":"134567","RequestComment\":\"aaaa","ResponseComment":"aaa", "InfoElements":[{"Key":"AtmCashDifferenceCurrency","Value":null,"Type":null}, {"Key":"AtmCashSurplus","Value":"0","Type":null} ] }]
排查提示
JSON语法中,被双引号包裹的字符串值内部如果要出现双引号,必须加\转义,否则解析器会将其识别为字符串结束边界,直接触发解析错误。
内容的提问来源于stack exchange,提问作者eddasahin61
相关产品推荐
相关产品推荐

