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

        }

    }

}
时间: 2024-12-29 07:46:49

fastxml Jackson annotation使用小记的相关文章

fastxml Jackson JsonNode (ObjectNode) 转 List

做环聊开发, Java 后台示例 用的 fastxml Jackson 解析json(擦, 狗屎, 不能支持下国产吗?) 有的json字段是数组, 发现不会解析了, 谷歌了下, 用以下方法可行,(不知道有没有其他简单的方法) JsonNode arrNode = getFriendsNode.get("data"); if (arrNode.isArray()) { for (final JsonNode objNode : arrNode) { friends.add(objNode

JackSon学习笔记(一)

概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotations.Jackson还包含了其它数据处理类库,此外不作说明.Jackson版本: 1.x (目前版本从1.1~1.9)与2.x.1.x与2.x从包的命名上可以看出来,1.x的类库中,包命名以:org.codehaus.jackson.xxx开头,而2.x类库中包命令:com.fastxml.jacks

Java下利用Jackson进行JSON解析和序列化

ava下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 一.准备工作 Jackson有1.x系列和2.x系列,2.x系列有3个jar包需要下载:jackson-core-2.2.3.jar(核心jar包)jackson-annotations-2.2.3.jar(该包提供Json注解支持)jackson-databind-2.2.3.ja

【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理

项目中,父层是Gene.java[基因实体]  子层是Corlib.java[文集库实体],一种基因对用多个文集库文章 但是在查询文集库这个实体的时候报错:[com.fasterxml.jackson.databind.JsonMappingException] 1 com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassis

jackson快速入门

1. 背景 目前维护的产品使用jackson处理json,现整理一下jackson相关资料,希望对初次接触jackson的新手有所帮助.     jackson主页: http://jackson.codehaus.org/     jackson document: http://wiki.fasterxml.com/JacksonJavaDocs     JacksonInFiveMinutes: http://wiki.fasterxml.com/JacksonInFiveMinutes 

使用 jackson 解析 json 示例

首先需要下载3个包,下载地址在Github FasterXML,这三个核心模块分别是: Streaming ("jackson-core") defines low-level streaming API, and includes JSON-specific implementations Annotations ("jackson-annotations") contains standard Jackson annotations Databind (&quo

jackson 解析json含有不规则的属性的json字符串的方法

对于json中含有点号,等其他特殊的,不是规范的java变量名的字符,可以使用一个注解来处理. 贴代码: import com.fasterxml.jackson.annotation.JsonProperty; public class Api { private Bean APISSInshopApi; @JsonProperty("API.SSInshopApi") public Bean getAPISSInshopApi() { return APISSInshopApi;

JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法

java代码对象如下: package com.evideostb.billsystem.module.model; import org.codehaus.jackson.map.annotate.JsonSerialize; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; /**  * 响应协议头  * @author zhang

开源jar包Jackson

使用jacson 1)jackson-annotation-2.2.2.jar jackson-core-2.2.2.jar jackson-datebind-2.2.2.jar 2)具体使用步骤 I.创建ObjectMapper对象 II.调用ObjectMapper对象的writerValueAsString对象 ObjectMapper   mapper= new ObjectMapper(); String jsonStr = mapper.writerValueAsString(cus