今天在编程调试的时候遇到下面的一个错误:
com.alibaba.fastjson.JSONException: syntax error, expect {, actual 4
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.parseMap(MapDeserializer.java:77)
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:63)
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:49)
at com.alibaba.fastjson.parser.deserializer.DefaultFieldDeserializer.parseField(DefaultFieldDeserializer.java:33)
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:433)
at com.alibaba.fastjson.parser.deserializer.ASMJavaBeanDeserializer.parseRest(ASMJavaBeanDeserializer.java:56)
at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_8_AsOmsGnrInfoQryInput.deserialze(Unknown Source)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:597)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:569)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:257)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:227)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:186)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:310)
但是没有看懂,花了较多时间去找原因,最后发现其实是上送的报文的问题。
问题报文如下:
{
"ctrlData": {},
"body": {
"reqHead": {},
"terms": ""
}
}
正确报文如下:
{
"ctrlData": {},
"body": {
"reqHead": {},
"terms": {}
}
}
进一步分析后发现,其实是类型的问题,terms本来是一个map对象,我上送的的string对象,所以转换的时候就报错了。
如有错误,忘大神指正和补充