|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| package mydto; import com.fasterxml.jackson.annotation.JsonFilter; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @JsonIgnoreProperties("password") @JsonFilter("myFilter") public class MyDto { private int intValue; private String name; private String email; private String city; private String province; private String country; private String password; @JsonIgnore private String secondPassword; private String descr; private DtoInfo info; private Long length; private Long weight; public MyDto() { super(); } public int getIntValue() { return intValue; } ....... } |
| package mydto; import java.util.Date; public class DtoInfo { private String author; private Date createDt; private String access; private String desc; ..... } |
| package mydto; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.BeanPropertyWriter; import com.fasterxml.jackson.databind.ser.PropertyWriter; import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter; public class DtoFilter extends SimpleBeanPropertyFilter { @Override public void serializeAsField(Object pojo, JsonGenerator jgen, SerializerProvider provider, PropertyWriter writer) throws Exception { if (include(writer)) { if (!writer.getName().equals("intValue")) { writer.serializeAsField(pojo, jgen, provider); return; } int intValue = ((MyDto) pojo).getIntValue(); if (intValue >= 0) { writer.serializeAsField(pojo, jgen, provider); } } else if (!jgen.canOmitFields()) { // since 2.3 writer.serializeAsOmittedField(pojo, jgen, provider); } } @Override protected boolean include(BeanPropertyWriter writer) { return true; } @Override protected boolean include(PropertyWriter writer) { return true; } } |
| package mydto; import java.io.IOException; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; public class DtoSerializer extends JsonSerializer<MyDto> { private JsonSerializer<MyDto> defaultSerializer; public DtoSerializer(JsonSerializer<MyDto> serializer) { defaultSerializer = serializer; } @Override public void serialize(MyDto dto, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { if("cn".equals(dto.getCountry())) { dto.setCountry("China"); } defaultSerializer.serialize(dto, jgen, provider); } @Override public boolean isEmpty(SerializerProvider provider, MyDto value) { return (value == null ); } } |
| package mydto; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; public class DtoInfoSerializer extends StdSerializer<DtoInfo> { private static final long serialVersionUID = 1L; public DtoInfoSerializer(Class<DtoInfo> dt) { super(dt); } @Override public void serialize(DtoInfo info, JsonGenerator jgen, SerializerProvider serializers) throws IOException, JsonProcessingException { if (info != null) { String pattern = "yyyy-MM-dd HH:mm:ss"; SimpleDateFormat sdf = new SimpleDateFormat(pattern); if (info.getCreateDt() == null) { info.setCreateDt(new Date()); } String formattedDate = sdf.format(info.getCreateDt()); jgen.writeStartObject(); jgen.writeStringField("authorName", info.getAuthor()); jgen.writeStringField("grantedAccess", info.getAccess()); jgen.writeStringField("createDate",formattedDate) ; jgen.writeEndObject(); } } } |
| package mydto; import java.util.Date; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationConfig; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.databind.ser.BeanSerializerModifier; import com.fasterxml.jackson.databind.ser.FilterProvider; import com.fasterxml.jackson.databind.ser.PropertyFilter; import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider; public class MyDtoMain { public static void main(String[] args) throws JsonProcessingException { test(); } public static void test() throws JsonProcessingException { PropertyFilter theFilter = new DtoFilter(); FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", theFilter); MyDto dto = new MyDto(); dto.setIntValue(-1); dto.setName("BlueSky"); dto.setEmail("bluesky@net.sky"); dto.setPassword("123456"); dto.setPassword("13579x"); dto.setCity("Dalian"); dto.setProvince("LiaoNing"); dto.setCountry("cn"); DtoInfo info=new DtoInfo(); info.setAccess("WRX"); info.setAuthor("admin"); info.setCreateDt(new Date()); dto.setInfo(info); ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(Include.NON_EMPTY); mapper.registerModule(new SimpleModule().addSerializer(DtoInfo.class, new DtoInfoSerializer(DtoInfo.class))); mapper.registerModule(new SimpleModule() { @Override public void setupModule(SetupContext context) { super.setupModule(context); context.addBeanSerializerModifier(new BeanSerializerModifier() { @Override public JsonSerializer<?> modifySerializer( SerializationConfig config, BeanDescription desc, JsonSerializer<?> serializer) { if (MyDto.class.isAssignableFrom(desc.getBeanClass())) { return new DtoSerializer((JsonSerializer<MyDto>) serializer); } return serializer; } }); } }); String dtoAsString = mapper.writer(filters).writeValueAsString(dto); System.out.println(dtoAsString); } } |
Json Filter and Serializer
lianghyan2024-11-27 16:32
相关推荐
快乐非自愿2 天前
C#解析JSON数据全攻略大熊程序猿2 天前
swagger json 转文档南望无一2 天前
@uiw/react-json-view 如何修改文本省略号、null节点、数组节点等AI扶我青云志3 天前
bert模型中config.json中所有参数kyle~3 天前
数据交换---JSON格式LuLaLuLaLeLLLLLL4 天前
Json Schema 学习笔记超龄超能程序猿4 天前
(5)从零开发 Chrome 插件:Vue3 Chrome 插件待办事项应用Mapmost5 天前
点云数据处理神器!一键生成3D Tiles,浏览器秒开无压力qq_214225876 天前
为Notepad++插上JSON格式化的翅膀许愿与你永世安宁6 天前
基于Llama的RAG 3种模型配置方法