栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Jackson - JSON 与 Java 对象的相互转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jackson - JSON 与 Java 对象的相互转换

文章目录
    • 1. 简述
    • 2. 下载 jackson
    • 3. POJO对象
    • 4. Java 对象转 JSON
    • 5. JSON 到 Java 对象

1. 简述

Jackson 提供了将 Java 对象与JSON 相互转换的方法:writeValue()与readValue()

mapper.writeValue– Java 对象到 JSON

ObjectMapper mapper = new ObjectMapper();

// Java object to JSON file
mapper.writeValue(new File("c:\test\staff.json"), new Staff());

// Java object to JSON string, default compact-print
String jsonString = mapper.writeValueAsString(new Staff());

// pretty-print
String jsonString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(new Staff());

mapper.readValue– JSON 到 Java 对象

ObjectMapper mapper = new ObjectMapper();

//JSON file to Java object
Staff obj = mapper.readValue(new File("c:\test\staff.json"), Staff.class);

//JSON URL to Java object
Staff obj = mapper.readValue(new URL("http://some-domains/api/staff.json"), Staff.class);

//JSON string to Java Object
Staff obj = mapper.readValue("{'name' : 'mkyong'}", Staff.class);
2. 下载 jackson

声明jackson-databind,它将拉入jackson-annotations并jackson-core


    com.fasterxml.jackson.core
    jackson-databind
    2.9.8

查看当前依赖的依赖树:

$ mvn dependency:tree

[INFO] - com.fasterxml.jackson.core:jackson-databind:jar:2.9.8:compile
[INFO]    +- com.fasterxml.jackson.core:jackson-annotations:jar:2.13.0:compile
[INFO]    - com.fasterxml.jackson.core:jackson-core:jar:2.13.0:compile
3. POJO对象

一个简单的 Java 对象 POJO,供以后测试。

@Data
public class Staff {

    private String name;
    private int age;
    private String[] position;              //  Array
    private List skills;            //  List
    private Map salary; //  Map

}

4. Java 对象转 JSON
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class JacksonExample1 {

    public static void main(String[] args) {

        ObjectMapper mapper = new ObjectMapper();

        Staff staff = createStaff();

        try {

            // Java objects to JSON file
            mapper.writeValue(new File("D:\code\FileUpload_GridFsTepmplate-main\src\staff.json"), staff);

            // Java objects to JSON string - compact-print
            String jsonString = mapper.writeValueAsString(staff);

            System.out.println(jsonString);

            // Java objects to JSON string - pretty-print
            String jsonInString2 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);

            System.out.println(jsonInString2);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    private static Staff createStaff() {

        Staff staff = new Staff();

        staff.setName("mkyong");
        staff.setAge(38);
        staff.setPosition(new String[]{"Founder", "CTO", "Writer"});
        Map salary = new HashMap() {{
            put("2010", new BigDecimal(10000));
            put("2012", new BigDecimal(12000));
            put("2018", new BigDecimal(14000));
        }};
        staff.setSalary(salary);
        staff.setSkills(Arrays.asList("java", "python", "node", "kotlin"));

        return staff;
    }
}

输出:D:codeFileUpload_GridFsTepmplate-mainsrcstaff.json

{"name":"mkyong","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}

终端:

{"name":"mkyong","age":38,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}

{
  "name" : "mkyong",
  "age" : 38,
  "position" : [ "Founder", "CTO", "Writer" ],
  "skills" : [ "java", "python", "node", "kotlin" ],
  "salary" : {
    "2018" : 14000,
    "2012" : 12000,
    "2010" : 10000
  }
}
5. JSON 到 Java 对象
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;
import java.io.IOException;

public class JacksonExample2 {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        try {

            // JSON file to Java object
            Staff staff = mapper.readValue(new File("D:\code\FileUpload_GridFsTepmplate-main\src\staff.json"), Staff.class);

            // JSON string to Java object
            String jsonInString = "{"name":"mkyong","age":37,"skills":["java","python"]}";
            Staff staff2 = mapper.readValue(jsonInString, Staff.class);

            // compact print
            System.out.println(staff2);

            // pretty print
            String prettyStaff1 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff2);

            System.out.println(prettyStaff1);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

测试结果:

Staff(name=mkyong, age=37, position=null, skills=[java, python], salary=null)
{
  "name" : "mkyong",
  "age" : 37,
  "position" : null,
  "skills" : [ "java", "python" ],
  "salary" : null
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871672.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号