序列化,反序列化 实现的本质_个人渣记录仅为自己搜索用的博客-CSDN博客
[理论] ddd是啥,ddd中 充血模型序列化用到,避免序列化充血能力的get接口
因为默认是属性,故不需要get/set
Expose 注解用来序列化反序列化.
Gson使用的一些小技巧(忽略某些字段、统一处理某种类型的数据等)_XeonYu的博客-CSDN博客_gson忽略字段
from Exclude Fields from Serialization in Gson | Baeldung
public static class CustomExclusionStrategy implements ExclusionStrategy {
@Override
public boolean shouldSkipClass(Class> clazz) {
return false;
}
@Override
public boolean shouldSkipField(FieldAttributes field) {
return field.getAnnotation(GsonIgnore.class) != null;
}
};
Gson gson=new GsonBuilder()
.addSerializationExclusionStrategy(new CustomExclusionStrategy())
.create();
fastjson 序列化必须要有get才行, 反序列化的时候可以使用featur实现没有set的赋值.
https://blog.csdn.net/jiasanshou/article/details/49155071
全面总结Fastjson过滤字段、排除字段的5种方法(含示例)_二进制之路的博客-CSDN博客_fastjson 忽略字段
第四点 4.使用属性过滤器包含需要序列化的字段.
SimplePropertyPreFilter.getIncludes
案例



1.1.46版本
fastJson的配置使用 - hello4world - 博客园

其他版本
fastJson的配置使用 - hello4world - 博客园
仅序列化注解指定的字段.
- om = new ObjectMapper();
- // disable auto detection
- om.disable(MapperFeature.AUTO_DETECT_CREATORS,
- MapperFeature.AUTO_DETECT_FIELDS,
- MapperFeature.AUTO_DETECT_GETTERS,
- MapperFeature.AUTO_DETECT_IS_GETTERS);
- // if you want to prevent an exception when classes have no annotated properties
- om.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
java - Jackson: how to serialize only annotated properties - Stack Overflow
仅对指定字段序列化反序列化. 充血模型可以继续保持, 封装. 不暴露set/get
举例: 退款回调保存后, 收付卡信息丢失.
原因:
富对象直接json序列化到数据库中, 有些get需要ignore. 有些字段没有实现set接口.
有set接口,又很容易导致封装失败? 所以本质上是慎用json序列化反序列化. 而采用field序列化反序列化. 充血模型的序列化,可以使用 仅序列化制定注解字段的方案.
序列化private字段 没有get方法
java - How does Jackson @JsonProperty() work when used to annotate private fields? - Stack Overflow
Jackson 注解 -- 输出私有字段_shangboerds的博客-CSDN博客
Serialize Private Fields using Jackson
Jackson注解说明
java - 搞定Jackson序列化与常用注解_个人文章 - SegmentFault 思否java get方法不序列化_Jackson序列化没有get, Set方法的POJO_你的温知的博客-CSDN博客
Jackson序列化没有get, Set方法的POJO · 大专栏
Java 中时间对象的序列化 - FatalFlower - 博客园