Java对象、Json、Xml转换工具Jackson使用

在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jackson除了能实现Java对象与Json串的互转外,还能將Java对象转换为Xml格式,使用较为简单而且据说效率比较高。
对于Jackson的jar包我们可以从maven资源库中下载:http://mvnrepository.com/

所需jar包如下,按照名称搜索下载即可。

这里写图片描述

接下来编写测试用例,我们需要一个java类:

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.將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();
        } 
    }

运行测试方法,控制台输出:

{"name":"Think in Java","price":100}

2.將Json字符串转为Java对象:

    /*
     * 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();
        }  
    }

由于我们重写了Book类的toString方法,运行测试方法,控制台输出:

name:Think in Java; price:100

3.將Java对象转为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格式字符串转为Java对象:

    /*
     * 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();
        }

    }
}
要将HTML转换JSON,您需要使用一些库。以下是一些步骤: 1.使用 Jsoup 库解析 HTML。 2.将 Jsoup 的 Document 对象转换JSON 对象。您可以使用 JSON-lib 或 Gson 等库来完成此任务。 以下是一个使用 Gson 库的示例代码: ```java import com.google.gson.Gson; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class HtmlToJson { public static void main(String[] args) { String html = "<html><head><title>Example</title></head><body><h1>Hello, World!</h1></body></html>"; // 使用 Jsoup 解析 HTML Document doc = Jsoup.parse(html); // 将 Jsoup 的 Document 对象转换JSON 对象 Gson gson = new Gson(); String json = gson.toJson(doc); System.out.println(json); } } ``` 输出结果: ``` { "childNodeSize": 2, "baseUri": "", "childNodes": [ { "nodeName": "#comment", "attributes": {}, "val": "!doctype html" }, { "nodeName": "html", "attributes": {}, "childNodes": [ { "nodeName": "head", "attributes": {}, "childNodes": [ { "nodeName": "title", "attributes": {}, "childNodes": [ { "nodeName": "#text", "attributes": {}, "val": "Example" } ] } ] }, { "nodeName": "body", "attributes": {}, "childNodes": [ { "nodeName": "h1", "attributes": {}, "childNodes": [ { "nodeName": "#text", "attributes": {}, "val": "Hello, World!" } ] } ] } ] } ], "ownerDocument": { "childNodeSize": 2, "baseUri": "", "childNodes": [ { "nodeName": "#comment", "attributes": {}, "val": "!doctype html" }, { "nodeName": "html", "attributes": {}, "childNodes": [ { "nodeName": "head", "attributes": {}, "childNodes": [ { "nodeName": "title", "attributes": {}, "childNodes": [ { "nodeName": "#text", "attributes": {}, "val": "Example" } ] } ] }, { "nodeName": "body", "attributes": {}, "childNodes": [ { "nodeName": "h1", "attributes": {}, "childNodes": [ { "nodeName": "#text", "attributes": {}, "val": "Hello, World!" } ] } ] } ] } ], "ownerDocument": null, "nodeName": "#root", "attributes": {}, "val": "" }, "nodeName": "#root", "attributes": {}, "val": "" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值