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));
    
            }
    
        }
    
    }
  • 相关阅读:
    观察OnPaint与OnIdle与OnSize事件
    wxPython的Refresh与事件双重响应
    DLL的静态调用和动态调用
    Delphi String的散漫记录,真是知识无数,陷阱无数
    VC调用Delphi DLL
    终于理解了什么是LGPL
    安装postgresql碰到Unable to write inside TEMP environment path
    图解:Activity生命周期
    Dephi泛型
    传递双重指针申请内存,典型用法
  • 原文地址:https://www.cnblogs.com/feika/p/6091543.html
Copyright © 2011-2022 走看看