자바 대상, JSon, Xml 변환 도구 Jackson 사용

12931 단어 jsonJackson
자바 프로젝트 에서 대상 을 JSon 형식의 문자열 로 변환 하 는 것 은 매우 흔 한 일이 다. 이러한 수 요 를 실현 할 수 있 는 공구 꾸러미 도 비교적 많다. 예 를 들 어 Gson, JSON - lib, Jackson 등 이다.본 고 는 주로 Jackson 의 사용 을 소개 한다. Jackson 은 자바 대상 과 JSon 문자열 의 상호 전환 을 실현 할 수 있 을 뿐만 아니 라 자바 대상 을 Xml 형식 으로 전환 할 수 있어 사용 이 비교적 간단 하고 효율 이 높다 고 한다.Jackson 의 jar 패키지 에 대해 서 는 maven 자원 라 이브 러 리 에서 다운로드 할 수 있 습 니 다.http://mvnrepository.com/
필요 한 jar 패 키 지 는 다음 과 같 습 니 다. 이름 에 따라 검색 하여 다운로드 하면 됩 니 다.
다음은 테스트 용례 를 작성 합 니 다. 자바 클래스 가 필요 합 니 다.
package com.csii.jackson.object;

public class Book{
    private String name;
    private int price;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public Book() {

    }
    public Book(String name,int price) {
        this.name = name;
        this.price = price;
    } 
    @Override
    public String toString() { 
        return "name:" + name +"; price:" + price;
    }

}

1. 자바 대상 을 JSon 문자열 로 변환 합 니 다.
    @Test
    public void testGenJson()
    {
        ObjectMapper objMapper = new ObjectMapper();
        Book book = new Book("Think in Java",100);
        try {
            jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
            jsonGen.writeObject(book);
        } catch (IOException e) { 
            e.printStackTrace();
        } 
    }

테스트 방법 실행, 콘 솔 출력:
{"name":"Think in Java","price":100}

2. JSon 문자열 을 자바 대상 으로 변환:
    /* * Json Java   */
    @Test
    public void testGenObjByJson()
    {
        ObjectMapper objMapper = new ObjectMapper();
        String json = "{\"name\":\"Think in Java\",\"price\":100}"; 
        try {
            Book book = objMapper.readValue(json, Book.class);
            System.out.println(book);
        } catch (IOException e) { 
            e.printStackTrace();
        }  
    }

북 클래스 의 toString 방법 을 다시 썼 기 때문에 테스트 방법 을 실행 하고 콘 솔 출력:
name:Think in Java; price:100

3. 자바 대상 을 Xml 형식 으로 변환:
     /* * Java   xml */
    @Test
    public void testGenXml()
    {
        XmlMapper xmlMapper = new XmlMapper();

        Book book = new Book("Think in Java",100);
        try {
            String xmlStr =  xmlMapper.writeValueAsString(book);
            System.out.println(xmlStr);
        } catch (JsonProcessingException e) { 
            e.printStackTrace();
        }
    }

테스트 방법 실행, 콘 솔 출력:
<Book xmlns=""><name>Think in Java</name><price>100</price></Book>

4. xml 형식 문자열 을 자바 대상 으로 변환:
    /* * xml Java   */
    @Test
    public void testGenObjByXml()
    {
        XmlMapper xmlMapper = new XmlMapper();
        String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>"; 
        try {
            Book book = xmlMapper.readValue(xmlStr, Book.class);
            System.out.println(book);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

출력 내용:
name:Think in Java; price:100

완전한 테스트 용례 코드:
package com.csii.jackson.test;

import java.io.IOException;

import org.junit.Test;

import com.csii.jackson.object.Book;
import com.fasterxml.jackson.core.JsonEncoding;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
@SuppressWarnings("deprecation")
public class JsonTest { 
    private JsonGenerator jsonGen = null;
    /* * Java    Json */
    @Test
    public void testGenJson()
    {
        ObjectMapper objMapper = new ObjectMapper();
        Book book = new Book("Think in Java",100);
        try {
            jsonGen = objMapper.getJsonFactory().createJsonGenerator(System.out,JsonEncoding.UTF8);
            jsonGen.writeObject(book);
        } catch (IOException e) { 
            e.printStackTrace();
        } 
    }
    /* * Json Java   */
    @Test
    public void testGenObjByJson()
    {
        ObjectMapper objMapper = new ObjectMapper();
        String json = "{\"name\":\"Think in Java\",\"price\":100}"; 
        try {
            Book book = objMapper.readValue(json, Book.class);
            System.out.println(book);
        } catch (IOException e) { 
            e.printStackTrace();
        }  
    }
    /* * Java   xml */
    @Test
    public void testGenXml()
    {
        XmlMapper xmlMapper = new XmlMapper();

        Book book = new Book("Think in Java",100);
        try {
            String xmlStr =  xmlMapper.writeValueAsString(book);
            System.out.println(xmlStr);
        } catch (JsonProcessingException e) { 
            e.printStackTrace();
        }
    }
    /* * xml Java   */
    @Test
    public void testGenObjByXml()
    {
        XmlMapper xmlMapper = new XmlMapper();
        String xmlStr = "<Book><name>Think in Java</name><price>100</price></Book>"; 
        try {
            Book book = xmlMapper.readValue(xmlStr, Book.class);
            System.out.println(book);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

좋은 웹페이지 즐겨찾기