还是写下来吧~攒点积分,这里分享一个和 json 格式没有关系导致的错误,是 Java 基础的问题
一、问题描述
在用 fastjson 做 json 字符串转对象的时候遇到以下错误
Exception in thread "main" com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0, fastjson-version 1.2.56
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:474)
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:273)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:673)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:369)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:337)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:251)
二、问题分析
- json 格式检验过绝对没有问题
- json 字符串对应的对象也没有问题,能一一对应上
- 完全按照 fastjson 的 api 来调用方法,该传的参数也传了
三、查找原因
这里看截图估计就明白了,知道原因的我恨不得锤扁隔壁老王
三、问题解决
其实只是 String 对象的 api 调用错误了 !(*′口`),来看看源码
public static String valueOf(Object var0) {
// 直接调用 toString()
return var0 == null ? "null" : var0.toString();
}
public String(byte[] var1, int var2, int var3) {
checkBounds(var1, var2, var3);
// 最终会对 btye 内容解码
this.value = StringCoding.decode(var1, var2, var3);
}
public String(byte[] var1) {
this((byte[])var1, 0, var1.length);
}