Skip to content
This repository was archived by the owner on Oct 23, 2024. It is now read-only.
This repository was archived by the owner on Oct 23, 2024. It is now read-only.

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

Open
@codeworkerx

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下去。

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