`
jifengjianhao
  • 浏览: 3564 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java工具类之Json,Xml格式转化

    博客分类:
  • Java
阅读更多

在项目开发的过程中经常会使用一些工具类,但是经常有这样的习惯A项目的工具类,B项目也要用。解决的办法很多,直接拷过去,或者单独搞一个基础工具类项目,或者把工具类打包!!!。于是我就开始收集有一些常用的Javag工具类。

今天先发布两个,一个Json和对象的相互转化,一个XML的。

不多说上代码。


import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * XML与对象转化
 *
 * @author 疾风
 * 2016年10月14日
 */
public class BeanXmlUtil {
   
    private static final Logger logger = LoggerFactory.getLogger(BeanXmlUtil.class);
   
    /**
     * 将对象解析成XML
     */
    public static String format(Object obj, String charset) {
        ByteArrayOutputStream baos = null;
        try {
            JAXBContext ctx = JAXBContext.newInstance(obj.getClass());
            baos = new ByteArrayOutputStream();
           
            Marshaller m = ctx.createMarshaller();
            m.setProperty(Marshaller.JAXB_ENCODING, charset);
            m.marshal(obj, baos);
           
            String result = baos.toString();
            if (logger.isDebugEnabled()) {
                logger.debug(result);
            }
           
            return result;
           
        } catch (JAXBException e) {
            throw new IllegalStateException(e);
           
        } finally {
            try {
                if (baos != null) baos.close();
            } catch (IOException e) {
                logger.error(e.getMessage(), e);
            }
        }
    }
   
    /**
     * 将XML解析成对象
     */
    public static Object parse(String xml, Class<?> clazz, String charset) {
        InputStreamReader reader = null;
        try{
            JAXBContext ctx = JAXBContext.newInstance(clazz);
            ByteArrayInputStream bis = new ByteArrayInputStream(xml.getBytes(charset));
           
            Unmarshaller um = ctx.createUnmarshaller();
           
            reader = new InputStreamReader(bis, charset);
            return um.unmarshal(reader);
           
        }catch (JAXBException e){
            throw new IllegalStateException(e);
           
        } catch (UnsupportedEncodingException e) {
            throw new IllegalStateException(e);
           
        } finally {
            try {
                if (reader != null) reader.close();
            } catch (IOException e) {
                logger.error(e.getMessage(), e);
            }
        }       
    }
   
    /**
     * 将对象解析成XML
     */
    public static String formatUseGBK(Object obj) {
        return format(obj, "GBK");
    }
   
    /**
     * 将对象解析成XML
     */
    public static String formatUseUtf8(Object obj){
        return format(obj, "UTF-8");
    }

    /**
     * 将XML解析成对象
     */
    public static Object parseUTF8(String xml, Class<?> clazz){
        return parse(xml, clazz, "UTF-8");
    }

    /**
     * 将XML(GBK)解析成对象
     */
    public static Object parseGBK(String xml, Class<?> clazz){
        return parse(xml, clazz, "GBK");
    }
}

以上是XML格式的转化。

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;


/**
 * json与对象转化
 *
 * @author 疾风
 * 2016年10月15日
 */
public class JsonUtils {

    /**
     * 将json字符串转换成对象
     */
    public static Object parse(String json, Class<?> clazz) {
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            return objectMapper.readValue(json, clazz);
        } catch (IOException e) {
            throw new IllegalArgumentException("无法解析JSON对象", e);
        }
    }
   
    /**
     * 将java对象格式化为字符串
     */
    public static String format(Object obj) {
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            return objectMapper.writeValueAsString(obj);
        } catch (IOException e) {
            throw new IllegalArgumentException("格式化对象为JSON格式出错", e);
        }
    }

    /**
     * 将json字符串转换成JsonNode对象
     */
    public static JsonNode parse(String json) {
        try {
            ObjectMapper mapper = new ObjectMapper();
            return mapper.readTree(json);
        } catch (IOException e) {
            throw new IllegalArgumentException("格式化对象为JSON格式出错", e);
        }
    }
   
    /**
     * 将json字符串转换成list
     */
    public static List<?> parseList(String json, Class<?> clazz) {
        ObjectMapper objectMapper = new ObjectMapper();

        try {
            return objectMapper.readValue(json, objectMapper.getTypeFactory().constructParametricType(List.class, clazz));
        } catch (IOException e) {
            throw new IllegalArgumentException("无法解析JSON对象", e);
        }
    }
}

以上缺一个和Map格式的转化,本人写了一个结果失败了,就没贴出来,以后要是搞好了再贴上去。

其他的工具类我会慢慢整理出来。

分享到:
评论

相关推荐

    Xml和Json互转工具类

    本实例主要是通过json-libjar包中的工具类进行操作,简单实现了xml字符串和json字符串之间的转化,xml文件和json文件的转化。而且还兼容jsonObject和jsonArray两种格式,自己摸索,记录一下以便学习。

    java解析xml生成json对象

    本项目提供的"解析xml---xml文件转json对象"是一个Java工具类,用于将XML文件解析成JSON对象,便于处理和操作。要使用这个工具,你需要遵循以下步骤: 1. **导入项目**:首先,下载提供的压缩包并解压。将解压后的...

    Java读取json文件,并转化为map取值

    本教程将深入讲解如何使用Java读取JSON文件,并将其内容转化为Map以便进行取值操作。 首先,我们需要引入处理JSON的库。Java标准库并不直接支持JSON操作,所以我们通常会使用第三方库,如`org.json`或`...

    java中json格式转化所需jar包

    在标题中提到的“java中json格式转化所需jar包”,可能指的是Jackson库的相关jar包,例如`jackson-databind.jar`,这个包包含了基本的JSON绑定功能,允许我们将Java对象序列化为JSON和反序列化回Java对象。...

    ResultSet转化为json,json转化为List

    在Java编程中,数据处理是核心任务之一,而ResultSet、JSON和List是处理数据时常见的三种数据结构。ResultSet是数据库查询结果的载体,JSON是一种轻量级的数据交换格式,而List是Java集合框架中的动态数组。本文将...

    json转对象(java 多级嵌套)

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据传输。在Java编程中,处理JSON数据是常见的任务,...通过熟练掌握这些工具和技巧,可以有效地在Java应用中处理复杂的JSON数据交互。

    json自动转换成xml的json包

    例如,它可能包含一个名为`JsonToXmlConverter`的类,该类具有将JSON字符串或对象转化为XML字符串的方法。使用这个库,开发者无需手动编写转换代码,只需调用相应的API,即可完成转换任务,大大简化了开发流程。 在...

    java 把xml转化为json

    在Java编程中,XML(可扩展标记语言)和JSON(JavaScript Object Notation)都是常见的数据交换格式,它们各自有各自的优点和应用场景。XML是结构化的数据表示方式,适合复杂的、层次化的信息,而JSON因其简洁明了且...

    Xml、Json、实体类之间的转换案例

    解析是将XML或JSON字符串转化为Java对象,而序列化则是将Java对象转换为XML或JSON字符串。 在Java中,我们通常使用Jackson库进行XML和JSON的转换。Jackson库提供了`ObjectMapper`类,它可以方便地实现XML和JSON之间...

    Json工具类

    综上所述,`Json工具类`主要是为了方便开发者在Java项目中进行JSON数据的处理,通过引入Gson或json-lib库,可以轻松地完成对象与JSON字符串之间的相互转化,从而简化数据交换的流程。在具体使用时,根据项目需求和...

    json解析xml 的jar包

    总的来说,这个“json解析xml的jar包”是一个便捷的工具,可以帮助Java开发者快速处理XML和JSON之间的转换,提高开发效率,同时保证了转换的正确性和项目的稳定性。在选择和使用这样的库时,应考虑其性能、兼容性、...

    java读取json的jar包

    本主题将深入探讨如何使用Java中的jar包来读取和解析JSON数据,并对比XML与JSON的区别。 首先,我们关注Java解析JSON的常用库之一——Jackson。Jackson是一个高效的JSON处理库,它提供了一系列API,包括`JsonParser...

    转化成json格式

    JSON(JavaScript Object ...总的来说,JSON是数据交换的重要格式,Java中的Gson库为我们提供了便利的转换工具。无论是简单的数据对象还是复杂的数据结构,都能通过Gson轻松地转化为JSON,从而方便在网络间传输或存储。

    实体类反射非空赋值,AjaxJson工具类

    总的来说,实体类反射非空赋值以及AjaxJson工具类的应用,是Java后端开发中的常见实践,它涉及到了Java反射API的使用、JSON数据与Java对象的转换,以及如何编写高效的工具类来简化这些操作。理解并熟练掌握这些技能...

    xml转换json数据类,可直接使用

    总之,XML转换JSON数据类是软件开发中的一种实用工具,它简化了不同数据格式间的交互,提高了开发效率,尤其是在API接口设计、数据传输和存储等方面。对于理解和使用这类工具,需要熟悉XML和JSON的语法以及它们之间...

    使用java来解析json

    Jackson提供了`ObjectMapper`类,可以将JSON字符串转化为对应的Java对象。首先定义一个Java类,它的属性与JSON中的键对应,然后使用`ObjectMapper`的`readValue()`方法: ```java public class User { private ...

    cxf框架的webservice,传递json,xml

    综上所述,CXF框架提供了全面的工具和功能,使得开发和支持XML和JSON数据格式的Web服务变得简单。无论是服务端的开发,还是客户端的调用,CXF都能提供强大的支持。在实际项目中,理解并熟练运用CXF处理XML和JSON的...

    xmljson生成实体类

    标题“xmljson生成实体类”指的是一个工具,它可以自动化地将XML或JSON格式的数据转换为Java实体类。这种工具通常会分析XML或JSON结构,然后自动生成对应的Java类,这些类包含了与原始数据相对应的属性和getter/...

Global site tag (gtag.js) - Google Analytics