JSONUtil(JAVA对象/List与json互转,xml与json互转)

package com.chauvet.utils.json;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;

import org.apache.commons.lang.StringUtils;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class JsonUtils {
    private final static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
    private static XMLSerializer xmlserializer = new XMLSerializer();

    public static Gson getInstance(){
        return gson;
    }

    /***
     * List 转为 JSON
     * @param list
     * @return
     */
    public static <T> String list2Json(List<T> list) {
        if(null != list && list.size() > 0){
            JSONArray jsonArray = JSONArray.fromObject(list);
            return jsonArray.toString();
        }
        return "";
    }

    /***
     * JSON 转换为 List
     * @param jsonStr
     *         [{"age":12,"createTime":null,"id":"","name":"wxw","registerTime":null,"sex":1},{...}]
     * @param objectClass
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> List<T> json2List(String jsonStr, Class<T> objectClass){
        if (StringUtils.isNotBlank(jsonStr)) {
            JSONArray jsonArray = JSONArray.fromObject(jsonStr);
            List<T> list = (List<T>) JSONArray.toCollection(jsonArray, objectClass);
            return list;
        }
        return null;
    }  

    /***
     * Object 转为  JSON
     * @param object
     * @return
     */
    public static String object2Json(Object object) {
        if(null != object){
            JSONArray jsonArray = JSONArray.fromObject(object);
            return jsonArray.toString();
        }
        return "";
    }

    /***
     *
     * JSON 转 Object
     *
     * @param jsonStr
     *         [{"age":12,"createTime":null,"id":"","name":"wxw","registerTime":null,"sex":1}]
     * @param objectClass
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T json2Ojbect(String jsonStr,  Class<T> objectClass){
        if(null != jsonStr){
            String leftStr = jsonStr.substring(0,2);
            String rightStr = jsonStr.substring(jsonStr.length()-2,jsonStr.length());
            if(leftStr.equals("[{")){
                jsonStr = jsonStr.substring(1,jsonStr.length());
            }
            if(rightStr.equals("}]")){
                jsonStr = jsonStr.substring(0,jsonStr.length()-1);
            }
            JSONObject jsonStu = JSONObject.fromObject(jsonStr);
            return (T) JSONObject.toBean(jsonStu,objectClass);
        }
        return null;
    }

    /***
     * JsonArray 转为 JSON
     * @param jsonArray
     * @return
     */
    public static String jsonArrayToJSONString(JSONArray jsonArray) {
        if(null != jsonArray){
            return jsonArray.toString();
        }
        return "";
    }

    /***
     * JsonObject 转为  JSON
     * @param jsonObject
     * @return
     */
    public static String jsonObjectToJSONString(JSONObject jsonObject) {
        if(null != jsonObject){
            return jsonObject.toString();
        }
        return "";
    } 

    /***
     * 将Object转换为JsonObject
     * @param object
     * @return
     */
    public static JSONObject object2JsonObject(Object object) {
        if(null != object){
            return JSONObject.fromObject(object);
        }
        return null;
    }

    /***
     * XML 转为 JSON
     * @param xmlString
     *             XML字符串  例如:
     *                     <?xml version=‘1.0‘ encoding=‘utf-8‘?><cities><province name=‘北京‘><item>东城区</item><item>西城区</item><item>崇文区</item><item>宣武区</item><item>朝阳区</item><item>丰台区</item><item>石景山区</item><item>海淀区</item><item>门头沟区</item><item>房山区</item><item>通州区</item><item>顺义区</item><item>昌平区</item><item>大兴区</item><item>怀柔区</item><item>平谷区</item><item>密云县</item><item>延庆县</item></province></cities>
     * @return
     *
     */
    public static String xml2json(String xmlString){
        if(StringUtils.isNotBlank(xmlString)){
            try {
                return xmlserializer.read(xmlString).toString();
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        return null;
    }

    /***
     * JSON 转为      XML
     * @param xmlString
     *             XML字符串  例如:
     *                     [{‘province‘:{‘@name‘:‘北京‘,‘item‘:[‘东城区‘,‘西城区‘,‘崇文区‘,‘宣武区‘,‘朝阳区‘,‘丰台区‘,‘石景山区‘,‘海淀区‘,‘门头沟区‘,‘房山区‘,‘通州区‘,‘顺义区‘,‘昌平区‘,‘大兴区‘,‘怀柔区‘,‘平谷区‘,‘密云县‘,‘延庆县‘]}}]
     *                  或者:
     *                  {‘province‘:{‘@name‘:‘北京‘,‘item‘:[‘东城区‘,‘西城区‘,‘崇文区‘,‘宣武区‘,‘朝阳区‘,‘丰台区‘,‘石景山区‘,‘海淀区‘,‘门头沟区‘,‘房山区‘,‘通州区‘,‘顺义区‘,‘昌平区‘,‘大兴区‘,‘怀柔区‘,‘平谷区‘,‘密云县‘,‘延庆县‘]}}
     * @return
     *
     */
    public static String json2xml(String jsonStr){
        if(StringUtils.isNotBlank(jsonStr)){
            try {
                if(jsonStr.contains("[{") && jsonStr.contains("}]")){
                    JSONArray jobj = JSONArray.fromObject(jsonStr);
                    return xmlserializer.write(jobj);
                }
                JSONObject jobj = JSONObject.fromObject(jsonStr);
                return xmlserializer.write(jobj);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
        return null;
    }

    /***
     * XML/JSON 互转
     *
     * @param sourceFilePath
     *                 要解析的文件路径
     * @param directFilePath
     *              生成文件存放的路径
     * @param flag
     *             true:JSON 转为 XML
     *             false:XML转为 JSON
     * @return
     */
    public static String xml2JsonOrjson2Xml(String sourceFilePath,String directFilePath,boolean flag){
        if(StringUtils.isBlank(sourceFilePath) || StringUtils.isBlank(directFilePath)){
            return null;
        }
        FileInputStream in =null;
        BufferedReader br = null;
        FileWriter fw = null;
        String rs = null;
        try{
            File jsonFile = new File(sourceFilePath);
            in = new FileInputStream(jsonFile);
            StringBuffer sbuf = new StringBuffer();
            br = new BufferedReader(new InputStreamReader(in));
            String temp =null;

            while((temp=br.readLine())!=null){
                sbuf.append(temp);
            }
            if(flag){
                rs  = json2xml(sbuf.toString());
            }else{
                rs  = xml2json(sbuf.toString());
            }
            File test = new File(directFilePath);
            if(!test.exists()){
                test.createNewFile();
            }
            fw = new FileWriter(test);
            fw.write(rs);
         }catch (Exception e) {
             e.printStackTrace();
        }finally{
            try {
                fw.close();
                br.close();
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return rs;
    }

    public static void main(String[] args) {

//        System.out.println(jfxfTranspose("E:/qwe.json", "E:/qwe.xml", 1));

//        System.out.println(json2xml("[{‘province‘:{‘@name‘:‘北京‘,‘item‘:[‘东城区‘,‘西城区‘,‘崇文区‘,‘宣武区‘,‘朝阳区‘,‘丰台区‘,‘石景山区‘,‘海淀区‘,‘门头沟区‘,‘房山区‘,‘通州区‘,‘顺义区‘,‘昌平区‘,‘大兴区‘,‘怀柔区‘,‘平谷区‘,‘密云县‘,‘延庆县‘]}}]"));
//        System.out.println(xml2json("<?xml version=‘1.0‘ encoding=‘utf-8‘?><cities><province name=‘北京‘><item>东城区</item><item>西城区</item><item>崇文区</item><item>宣武区</item><item>朝阳区</item><item>丰台区</item><item>石景山区</item><item>海淀区</item><item>门头沟区</item><item>房山区</item><item>通州区</item><item>顺义区</item><item>昌平区</item><item>大兴区</item><item>怀柔区</item><item>平谷区</item><item>密云县</item><item>延庆县</item></province></cities>"));

        /*User u = new User();
        u.setName("wxw");
        u.setAge(12);
        u.setSex(1);
        System.out.println(object2JsonObject(u));*/

        /*User u = new User();
        u.setName("wxw");
        u.setAge(12);
        u.setSex(1);
        System.out.println(object2Json(u));*/

        /*User us = json2Ojbect(object2Json(u), User.class);
        System.out.println(us);
        */

        /*List<User> list = new ArrayList<User>();
        User u = new User();
        u.setName("wxw");
        u.setAge(12);
        u.setSex(1);
        list.add(u);
        u = new User();
        u.setName("zmx");
        u.setAge(12);
        u.setSex(0);
        list.add(u);
        u = new User();
        u.setName("arnold");
        u.setAge(12);
        u.setSex(1);
        list.add(u);
        String str = list2Json(list);
        System.out.println(str);*/

        /*List<User> userList = converAnswerFormString(str, User.class);
        System.out.println(userList);
        */

    }
}
时间: 2024-10-11 15:08:38

JSONUtil(JAVA对象/List与json互转,xml与json互转)的相关文章

SQL2008使用json.net实现XML与JSON互转

借助CLR,首先实现字符串的互转 ? ? public class JsonFunction { /// <summary> /// XML转JSON /// </summary> /// <param name="xml"></param> /// <returns></returns> /// <remarks> /// json不建议太长 /// </remarks> [Microso

什么是json? 什么是xml?JSON与XML的区别比较

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999 的一个子集. JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Pytho

JAVA对象JSON数据互相转换的四种常见情况

1. 把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromObject(userlist);    String jsonstr = array.toString(); 2.把java对象转换成json对象,并转化为字符串 JSONObject object = JSONObject.fromObject(invite);   String str=object.toString()); 3.把JSON字符串转换为JAVA 对

JSON 字符串 与 java 对象的转换

jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //json-lib-2.2-jdk15.jar import net.sf.json.JSONArray;import net.sf.json.JSONObject; 1. //把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromOb

JSON字符串与java对象的转换

所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar 5.ezmorph.jar 6.json-lib-2.2.2-jdk15.jar 1. 把java 对象列表转换为json对象数组,并转为字符串 JSONArray array = JSONArray.fromObject(userlist); String jsonstr = array.toSt

JSon_零基础_007_将JSon格式的&quot;数组&quot;字符串转换为Java对象&quot;数组&quot;

将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, 通过get(key)方法取得key对应的value部分(字符串). 通过getJSONObject(key)可以取得一个JSONObject对象. 通过getJSONArray(key)可以得到一个JSONArray对象. 导入需要的jar包: package com.west.

JSON 字符串 与 java 对象之间互相转换

首先引入maven需要依赖的jar: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> 需要导入的类: import net.sf.json

如何将java对象转换成json数据

package cn.hopetesting.com.test; import cn.hopetesting.com.domain.User;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import org.junit.Test; import java.io.File;import java.io.FileWriter;i

java 中xml转换为json对象

1.前提须要jar包: json-lib-2.4-jdk15.jar 和 xom-1.2.5.jar ,maven 仓库: net.sf.json-lib json-lib 2.4 jdk15 xom xom 1.2.5 2.代码部分: public static JSON xmlToJson(String xml) { XMLSerializer xmlSerializer = new XMLSerializer(); if(xml!=null && !"".equa