fastjson icon indicating copy to clipboard operation
fastjson copied to clipboard

奇怪的 JSONException: syntax error, expect {, actual int

Open codeworkerx opened this issue 1 year ago • 1 comments

版本: fastjson-version 1.2.83 接口描述: curl --location --request POST 'http://localhost:8080/fj' \ --header 'Content-Type: application/json' \ --data-raw '{ "auditStatus": "1", "message": "这是审批意见啊", "ids": [63] }' 接口定义的参数ids是集合形式,但是前端错误传递了数字类型,发现两种不同的入参顺序,出现了不同的结果 调用参数一: {"auditStatus":"1","message":"这是审批意见啊","ids":63} 接口正常响应,fastjson将ids的入参处理成了数组,故接口无报错。 调用参数二: {"auditStatus":"1","ids":63,"message":"这是审批意见啊"} 调整了顺序,此时接口报错,提示: com.alibaba.fastjson.JSONException: syntax error, expect {, actual int, pos 25, fastjson-version 1.2.83

调试了源码,发现了这点区别 参数一: image 参数二: image

JavaBeanDeserializer.deserialze()方法中,当 token=2时,某些情况会触发以下代码 image 导致最终出现异常。

感觉有点奇怪, public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) { return deserialze(parser, type, fieldName, 0); } 在调用这个方法时,没debug下去。

codeworkerx avatar Aug 01 '24 10:08 codeworkerx

和这个 https://github.com/alibaba/fastjson/pull/4127 有关系吗

hxcliff avatar Aug 08 '24 03:08 hxcliff