奇怪的 JSONException: syntax error, expect {, actual int #4526
Description
版本:
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
在 JavaBeanDeserializer.deserialze()
方法中,当 token=2时,某些情况会触发以下代码
导致最终出现异常。
感觉有点奇怪,
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) { return deserialze(parser, type, fieldName, 0); }
在调用这个方法时,没debug下去。