Jackson 简单使用记录

Jackson 简单使用记录

  • https://github.com/FasterXML
  • https://www.ibm.com/developerworks/cn/java/jackson-advanced-application/index.html
  • https://www.baeldung.com/jackson
  • http://tutorials.jenkov.com/java-json/jackson-objectmapper.html
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jsr310</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-jdk8</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-guava</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>
package morning.cat.jackson;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import morning.cat.jackson.model.DateModel;
import morning.cat.jackson.model.Person;
import morning.cat.jackson.model.User;
import org.junit.Test;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JacksonTest {

    @Test
    public void test1() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();

        Map<String, Object> map = new HashMap<>();
        map.put("name", "晨猫");
        map.put("age", 25);
        map.put("interests", new String[]{"宅", "music"});
        String text = mapper.writeValueAsString(map);
        System.out.println(text);

        Map<String, Object> map2 = mapper.readValue(text, new TypeReference<Map<String, Object>>() {
        });
        System.out.println(map2);

        JsonNode root = mapper.readTree(text);
        String name = root.get("name").asText();
        int age = root.get("age").asInt();
        System.out.println("name:" + name + " \nage:" + age);
    }

    @Test
    public void test2() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();

        Person person = Person.builder()
                .id(System.currentTimeMillis())
                .name("zhang")
                .count(7)
                .price(23.89)
                .bir1(new Date())
                .array(new String[]{"hello", "世界"})
                .list(Arrays.asList("你好", "world"))
                .map(new HashMap<String, Object>() {{
                    put("Name", "Cat");
                    put("QQ", 2444159188L);
                }})
//                .bir2(LocalDate.now())
//                .createdAt(LocalDateTime.now())
                .build();
        String text = mapper.writeValueAsString(person);
        System.out.println(text);

        Person person1 = mapper.readValue(text, Person.class);
        System.out.println(person1);

        Person person2 = mapper.readValue(text, new TypeReference<Person>() {
        });
        System.out.println(person2);

    }

    @Test
    public void test3() throws IOException {
        ObjectMapper mapper = new ObjectMapper()
                .registerModule(new JavaTimeModule())
                .registerModule(new Jdk8Module());
        // 美化输出
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        DateModel dateModel = DateModel.builder()
                .id(System.currentTimeMillis())
                .bir1(new Date())
                .createdAt(LocalDateTime.now())
                .build();

        byte[] bytes = mapper.writeValueAsBytes(dateModel);
        System.out.println(new String(bytes));

        DateModel dateModel1 = mapper.readValue(bytes, DateModel.class);
        System.out.println(dateModel1);
    }

    @Test
    public void test4() throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        ObjectReader objectReader = mapper.readerFor(User.class);

        String text = mapper.writeValueAsString(User.builder().id(System.currentTimeMillis()).name("Tony").build());
        JsonNode jsonNode = objectReader.readTree(text);

        String name = jsonNode.get("name").asText();
        System.out.println(name);

        User user = objectReader.readValue(text);
        System.out.println(user);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值