发现 SerializerFeature.WriteClassName这个如果是设置在 某一个对象的某一个属性字段上,在JSON.toJSONString的时候并不起作用, 不知道是设计如此还是用法不对?
假设有两个对象 A B :
@JSONType(serialzeFeatures = SerializerFeature.WriteClassName)
public class B {
private String b;
public B() {
}
getter/setter
}
public class A {
// @JSONField(serialzeFeatures = SerializerFeature.WriteClassName) 加不加这个一样
private B b;
public A() {
}
getter/setter
}
那么在序列化的时候会有这样的结果:
@Test
public void testCase1(){
B b = new B("bbbbb");
A a = new A(b);
System.out.println(JSONUtil.toJSONString(a)); // {"b":{"b":"bbbbb"}}
System.out.println();
System.out.println(JSONUtil.toJSONString(b)); // {"@type":"com.jcg.B","b":"bbbbb"}
System.out.println();
System.out.println(JSON.toJSONString(a, SerializerFeature.WriteClassName)); // {"@type":"com.jcg.A","b":{"b":"bbbbb"}}
System.out.println();
Map<String,Object> c = new HashMap<>();
c.put("b",b);
System.out.println(JSONUtil.toJSONString(c)); //{"b":{"@type":"com.jcg.B","b":"bbbbb"}}
}
我想要的效果,其实就是最后一种,也就是{"b":{"@type":"com.jcg.B","b":"bbbbb"}}
不知道要如何实现?
暂无答案!
目前还没有任何答案,快来回答吧!