【FastJson源码分析】为什么直接使用JSON.toJSON()
枚举类并没有被替换成描述
- 简述原因
- 因为
Json.toJson()
默认取用的是枚举类的Name
属性
- 如何获取替换成枚举类描述的
JSON
对象
- 使用
JSON.toJSON(JSON.toJSONString(instance))
获取
弄清两者之间的区别,你就知道为什么要这样调用了
JSON.toJSONString()
在研究toJsonString()
方法的时候,发现fastjson
自己也有一个ObjectSerializer
的对象池,当你在实体类中标记了@JSONField
注解的时候,它就会根据 实体类的类型返回相对应的ObjectSerializer
(序列化器),先看以下代码:
public final void write(Object object) {
if (object == null) {
this.out.writeNull();
} else {
Class<?> clazz = object.getClass();
ObjectSerializer writer = this.getObjectWriter(clazz); // 1 号代码