Skip to content
This repository was archived by the owner on Jul 29, 2026. It is now read-only.
This repository was archived by the owner on Jul 29, 2026. It is now read-only.

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

Description

@codeworkerx

版本:
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下去。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions