当前位置: 首页 > news >正文

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

相关文章:

  • java基础设计 开源框架
  • Spring源码学习笔记
  • 正则资料笔记
  • C#接口慨述
  • Inversion of Control 简要笔记
  • 定义接口及定义接口成员
  • 小马哥讲Spring核心编程思想 - 第二章 重新认识IoC
  • 访问接口
  • 记录一次 post 请求的并发测试
  • RPC与 Dubbo 资料梳理
  • 实现接口
  • dubbo 常见用法与配置梳理(一)
  • 接口转换
  • Seata 简要笔记
  • 覆盖虚接口
  • [译] 怎样写一个基础的编译器
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Date型的使用
  • echarts的各种常用效果展示
  • ES6核心特性
  • Git同步原始仓库到Fork仓库中
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • mac修复ab及siege安装
  • Mithril.js 入门介绍
  • mongodb--安装和初步使用教程
  • REST架构的思考
  • sublime配置文件
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Zsh 开发指南(第十四篇 文件读写)
  • 笨办法学C 练习34:动态数组
  • 高程读书笔记 第六章 面向对象程序设计
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端之Sass/Scss实战笔记
  • 前端知识点整理(待续)
  • 山寨一个 Promise
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 线性表及其算法(java实现)
  • 学习JavaScript数据结构与算法 — 树
  • 责任链模式的两种实现
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​2020 年大前端技术趋势解读
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​如何防止网络攻击?
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #mysql 8.0 踩坑日记
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C++)八皇后问题
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (七)Knockout 创建自定义绑定
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .java 9 找不到符号_java找不到符号
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献