zoukankan      html  css  js  c++  java
  • fastxml Jackson annotation使用小记

    dependencies:

    compile("com.fasterxml.jackson.core:jackson-annotations")
    compile("com.fasterxml.jackson.core:jackson-core")
    compile("com.fasterxml.jackson.core:jackson-databind")

    examples:

    public class JacksonSerializerTest {
    
        @Test
        public void testJsonIgnoreProperties() throws IOException {
            ObjectMapper mapper = new ObjectMapper();
            PersonDTO dto = new PersonDTO();
            dto.setAge(18);
            dto.setName("Jack");
            dto.setId(1);
    
            String jsonStr = mapper.writeValueAsString(dto);
            PersonDTO dto1 = mapper.readValue(jsonStr, PersonDTO.class);
    
            assertTrue(dto1.getName() == null);
    
            String jsonStr1 = "{"id":1, "name":"Jack"}";
            PersonDTO dto2 = mapper.readValue(jsonStr1, PersonDTO.class);
            assertTrue(dto2.getName() == null);
        }
    
        @Test
        public void testJsonIgnore() throws IOException {
            ObjectMapper mapper = new ObjectMapper();
            PersonDTO dto = new PersonDTO();
            dto.setId(2);
            dto.setMale(true);
            String jsonStr = mapper.writeValueAsString(dto);
            PersonDTO dto1 = mapper.readValue(jsonStr, PersonDTO.class);
    
            assertTrue(dto1.getMale() == false);
        }
    
        @Test
        public void testCustomSerializer() throws IOException {
            ObjectMapper mapper = new ObjectMapper();
            PersonDTO dto = new PersonDTO();
            dto.setId(3);
            dto.setWeight(Double.valueOf(65.371));
    
            String jsonStr = mapper.writeValueAsString(dto);
            PersonDTO dto1 = mapper.readValue(jsonStr, PersonDTO.class);
    
            assertTrue(dto1.getWeight().equals(Double.valueOf(65.4)));
        }
    
        @Test
        public void testJsonNaming() throws IOException {
            String nickName = "JK.";
            ObjectMapper mapper = new ObjectMapper();
            PersonDTO dto = new PersonDTO();
            dto.setId(4);
            dto.setNickName(nickName);
    
            String jsonStr = mapper.writeValueAsString(dto);
            PersonDTO dto1 = mapper.readValue(jsonStr, PersonDTO.class);
    
            assertTrue(dto1.getNickName().equals(nickName));
        }
    
        @JsonIgnoreProperties(value = {"name", "age"})
        @Data
        @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
        public static class PersonDTO {
            private int id;
            private String name;
            private int age;
            @JsonIgnore
            private boolean male;
            @JsonSerialize(using = CustomDoubleSerialize.class)
            private Double weight;
    
            private String nickName;
    
            public boolean getMale() {
                return this.male;
            }
        }
    
        public static class CustomDoubleSerialize extends JsonSerializer<Double> {
    
            private DecimalFormat df = new DecimalFormat("##.0");
    
            @Override
    
            public void serialize(Double value, JsonGenerator jgen,SerializerProvider provider) throws IOException,JsonProcessingException {
    
                jgen.writeString(df.format(value));
    
            }
    
        }
    
    }
  • 相关阅读:
    win10如何安装应用商店
    Redis从入门到精通——认识 Redis
    SkyWalking——SkyWalking安装和配置
    SkyWalking——SkyWalking二次开发必备知识
    SkyWalking——SkyWalking架构设计
    SkyWalking——全面认识Apache SkyWalking
    Redis从入门到精通——初识NoSQL
    RocketMQ(4.8.0)——延迟消息机制
    RocketMQ(4.8.0)——事务消息机制
    RocketMQ(4.8.0)——Broker 的关机恢复机制
  • 原文地址:https://www.cnblogs.com/feika/p/6091543.html
Copyright © 2011-2022 走看看