packagecom.chauvet.utils.json;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileWriter;importjava.io.InputStreamReader;importjava.util.List;importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;importnet.sf.json.xml.XMLSerializer;importorg.apache.commons.lang.StringUtils;importcom.google.gson.Gson;importcom.google.gson.GsonBuilder;public classJsonUtils {private final static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();private static XMLSerializer xmlserializer = newXMLSerializer();public staticGson getInstance(){returngson;

}/***

* List 转为 JSON

*@paramlist

*@return

*/

public static String list2Json(Listlist) {if(null != list && list.size() > 0){

JSONArray jsonArray=JSONArray.fromObject(list);returnjsonArray.toString();

}return "";

}/***

* JSON 转换为 List

*@paramjsonStr

* [{"age":12,"createTime":null,"id":"","name":"wxw","registerTime":null,"sex":1},{...}]

*@paramobjectClass

*@return

*/@SuppressWarnings("unchecked")public static List json2List(String jsonStr, ClassobjectClass){if(StringUtils.isNotBlank(jsonStr)) {

JSONArray jsonArray=JSONArray.fromObject(jsonStr);

List list = (List) JSONArray.toCollection(jsonArray, objectClass);returnlist;

}return null;

}/***

* Object 转为 JSON

*@paramobject

*@return

*/

public staticString object2Json(Object object) {if(null !=object){

JSONArray jsonArray=JSONArray.fromObject(object);returnjsonArray.toString();

}return "";

}/***

*

* JSON 转 Object

*

*@paramjsonStr

* [{"age":12,"createTime":null,"id":"","name":"wxw","registerTime":null,"sex":1}]

*@paramobjectClass

*@return

*/@SuppressWarnings("unchecked")public static T json2Ojbect(String jsonStr, ClassobjectClass){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

*@paramjsonArray

*@return

*/

public staticString jsonArrayToJSONString(JSONArray jsonArray) {if(null !=jsonArray){returnjsonArray.toString();

}return "";

}/***

* JsonObject 转为 JSON

*@paramjsonObject

*@return

*/

public staticString jsonObjectToJSONString(JSONObject jsonObject) {if(null !=jsonObject){returnjsonObject.toString();

}return "";

}/***

* 将Object转换为JsonObject

*@paramobject

*@return

*/

public staticJSONObject object2JsonObject(Object object) {if(null !=object){returnJSONObject.fromObject(object);

}return null;

}/***

* XML 转为 JSON

*@paramxmlString

* XML字符串 例如:

* <?xml version='1.0' encoding='utf-8'?>东城区西城区崇文区宣武区朝阳区丰台区石景山区海淀区门头沟区房山区通州区顺义区昌平区大兴区怀柔区平谷区密云县延庆县

*@return**/

public staticString xml2json(String xmlString){if(StringUtils.isNotBlank(xmlString)){try{returnxmlserializer.read(xmlString).toString();

}catch(Exception e) {

e.printStackTrace();return null;

}

}return null;

}/***

* JSON 转为 XML

*@paramxmlString

* XML字符串 例如:

* [{'province':{'@name':'北京','item':['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县']}}]

* 或者:

* {'province':{'@name':'北京','item':['东城区','西城区','崇文区','宣武区','朝阳区','丰台区','石景山区','海淀区','门头沟区','房山区','通州区','顺义区','昌平区','大兴区','怀柔区','平谷区','密云县','延庆县']}}

*@return**/

public staticString json2xml(String jsonStr){if(StringUtils.isNotBlank(jsonStr)){try{if(jsonStr.contains("[{") && jsonStr.contains("}]")){

JSONArray jobj=JSONArray.fromObject(jsonStr);returnxmlserializer.write(jobj);

}

JSONObject jobj=JSONObject.fromObject(jsonStr);returnxmlserializer.write(jobj);

}catch(Exception e) {

e.printStackTrace();return null;

}

}return null;

}/***

* XML/JSON 互转

*

*@paramsourceFilePath

* 要解析的文件路径

*@paramdirectFilePath

* 生成文件存放的路径

*@paramflag

* true:JSON 转为 XML

* false:XML转为 JSON

*@return

*/

public static String xml2JsonOrjson2Xml(String sourceFilePath,String directFilePath,booleanflag){if(StringUtils.isBlank(sourceFilePath) ||StringUtils.isBlank(directFilePath)){return null;

}

FileInputStream in=null;

BufferedReader br= null;

FileWriter fw= null;

String rs= null;try{

File jsonFile= newFile(sourceFilePath);

in= newFileInputStream(jsonFile);

StringBuffer sbuf= newStringBuffer();

br= new BufferedReader(newInputStreamReader(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= newFile(directFilePath);if(!test.exists()){

test.createNewFile();

}

fw= newFileWriter(test);

fw.write(rs);

}catch(Exception e) {

e.printStackTrace();

}finally{try{

fw.close();

br.close();

in.close();

}catch(Exception e) {

e.printStackTrace();

}

}returnrs;

}public static voidmain(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'?>东城区西城区崇文区宣武区朝阳区丰台区石景山区海淀区门头沟区房山区通州区顺义区昌平区大兴区怀柔区平谷区密云县延庆县"));

/*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 list = new ArrayList();

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 userList = converAnswerFormString(str, User.class);

System.out.println(userList);*/}

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐