java使用jackson生成和解析JSON


java使用jackson生成和解析JSON

1.導包

 

 2.生成json和解析json  

package test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import domain.Person;
import org.junit.Test;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

/**
 * 2. Java對象轉換JSON
 *             1. 使用步驟:
 *                 1. 導入jackson的相關jar包
 *                 2. 創建Jackson核心對象 ObjectMapper
 *                 3. 調用ObjectMapper的相關方法進行轉換
 *             1. 轉換方法:
 *                         * writeValue(參數1,obj):
 *                             參數1:
 *                                 File:將obj對象轉換為JSON字符串,並保存到指定的文件中
 *                                 Writer:將obj對象轉換為JSON字符串,並將json數據填充到字符輸出流中
 *                                 OutputStream:將obj對象轉換為JSON字符串,並將json數據填充到字節輸出流中
 *                         * writeValueAsString(obj):將對象轉為json字符串
 * 使用jackSon生成解析jsom
 * @date 2019/10/5 15:09
 */
public class Test1 {
    @Test//生成json
    public void test() throws IOException {
        Person p=new Person();
        p.setName("解析json");
        p.setAge(13);
        p.setGender("男");
        ObjectMapper mapper=new ObjectMapper();//先創建objmapper的對象
        String string = mapper.writeValueAsString(p);
        /*    *mapper.writeValue(參數1,obj): 1.File:將obj對象轉換為JSON字符串,並保存到指定的文件中
         *                                       2.Writer:將obj對象轉換為JSON字符串,並將json數據填充到字符輸出流中
         *                                       3.OutputStream:將obj對象轉換為JSON字符串,並將json數據填充到字節輸出流中*/
        System.out.println(string);//{"name":"解析json","age":13,"gender":"男"}

        //  1.File:將obj對象轉換為JSON字符串,並保存到指定的文件中
        mapper.writeValue(new File("D://a.txt"),p);
        //   2.Writer:將obj對象轉換為JSON字符串,並將json數據填充到字符輸出流中
        mapper.writeValue(new FileWriter("D://b.txt"),p);
    }
    @Test//json注解
    public void test1() throws JsonProcessingException {
        Person p=new Person();
        p.setName("解析json");
        p.setAge(13);
        p.setGender("男");
        p.setDate(new Date());
        ObjectMapper mapper=new ObjectMapper();//先創建objmapper的對象
        String string = mapper.writeValueAsString(p);
        System.out.println(string);
    }
    @Test//json復雜轉換
    public void test2() throws JsonProcessingException {
        Person p=new Person();
        p.setName("解析json");
        p.setAge(13);
        p.setGender("男");
        p.setDate(new Date());

        Person p1=new Person();
        p.setName("解析json");
        p.setAge(13);
        p.setGender("男");
        p.setDate(new Date());

        Person p2=new Person();
        p.setName("解析json");
        p.setAge(13);
        p.setGender("男");
        p.setDate(new Date());
        //集合
        List<Person> PS=new ArrayList<>();
        PS.add(p);
        PS.add(p1);
        PS.add(p2);
        ObjectMapper mapper=new ObjectMapper();//先創建objmapper的對象
        String string = mapper.writeValueAsString(PS);
        System.out.println(string);
    }
    @Test//json  MAP生成json
    public void test3() throws JsonProcessingException {
        //創建map對象
        Map<String,Object> map=new HashMap<>();
        map.put("name","map");
        map.put("age",11);
        map.put("gender","男");
        ObjectMapper mapper=new ObjectMapper();//先創建objmapper的對象
        String string = mapper.writeValueAsString(map);
        System.out.println(string);
    }
    @Test//json字符串轉換為java對象
    public void test4() throws IOException {
        String json="{\"gender\":\"男\",\"name\":\"map\",\"age\":11}";
        ObjectMapper mapper=new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);//有了對象就可以調用getXx和setXxx方法了
        System.out.println(person);//打印一個person對象          Person{name='map', age=11, gender='男', date=null}
        //這是一個json字符串{"name":"解析json","age":13,"gender":"男"}
    }
}

 3.person類

package domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;

import java.util.Date;

public class Person {
    private String name;
    private int age;
    private String gender;
    //@JsonIgnore 轉換時忽略 date字段
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                ", date=" + date +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM