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));

        }

    }

}

 

posted @ 2016-11-22 22:55  samu  阅读(1539)  评论(0编辑  收藏  举报