6
public class Test {
public static void main(String[] args) {
String str = "abcd";
Pojo2 obj = new Pojo2();
Map<byte[], byte[]> map = new HashMap();
map.put(str.getBytes(), str.getBytes());
obj.setValues(new Object[]{map});
byte[] ser = JSON.toJSONBytes(obj, new SerializerFeature[]{SerializerFeature.WriteClassName});
obj = JSON.parseObject(ser, Pojo2.class, new Feature[0]);
System.out.println(obj.toString());
}
public static class Pojo2 implements Serializable {
private Object[] values;
public Object[] getValues() {
return values;
}
public void setValues(Object[] values) {
this.values = values;
}
}
}
就会出现异常:
Exception in thread "main" com.alibaba.fastjson.JSONException: expect ':' at 0, actual '
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:296)
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:74)
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:43)
at com.alibaba.fastjson.parser.deserializer.ContextObjectDeserializer.deserialze(ContextObjectDeserializer.java:9)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:395)
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1401)
at com.alibaba.fastjson.parser.deserializer.JavaObjectDeserializer.deserialze(JavaObjectDeserializer.java:46)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:775)
at com.alibaba.fastjson.serializer.ObjectArrayCodec.deserialze(ObjectArrayCodec.java:183)
at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_1_Pojo2.deserialze(Unknown Source)
at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:296)
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:688)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:395)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:460)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:414)
at com.alibaba.fastjson.JSON.parseObject(JSON.java:406)
``
而去掉SerializerFeature.WriteClassName序列化特性,能成功,但是Pojo2对象中的values为JSONObject,并且key和value都是String字符串了