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

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

  1. org.json里实现XML和JSON之间对象互转

    org.json包里有一个类org.json.XML可以实现XML和JSON之间的转换.http://www.json.org/javadoc/org/json/XML.html JSONObject ...

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

    借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table     public class JsonFunction    {        /// <summary> ...

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

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Prog ...

  4. XML 和 java对象相互转换

    XML 和 java对象相互转换 博客分类: XML 和 JSON   下面使用的是JDK自带的类,没有引用任何第三方jar包. Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 ...

  5. JSON字符串与java对象的转换

    所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...

  6. JSON 字符串 与 java 对象的转换

    jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...

  7. JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"

    将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...

  8. json、xml和java对象之间的转化

    其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...

  9. jackson java对象和json对象的互相转换

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...

随机推荐

  1. C++ 中的空格

    C++ 中的空格只包含空格的行,被称为空白行,可能带有注释,C++ 编译器会完全忽略它. 在 C++ 中,空格用于描述空白符.制表符.换行符和注释.空格分隔语句的各个部分,让编译器能识别语句中的某个元 ...

  2. 学习 C++,关键是要理解概念,而不应过于深究语言的技术细节

    学习 C++学习 C++,关键是要理解概念,而不应过于深究语言的技术细节. 学习程序设计语言的目的是为了成为一个更好的程序员,也就是说,是为了能更有效率地设计和实现新系统,以及维护旧系统. C++ 支 ...

  3. (转)SDL 1.2 to 2.0 Migration Guide--SDL1.2更新到SDL2.0指南

    SDL 1.2 to 2.0 Migration Guide 目录 SDL 1.2 to 2.0 Migration Guide Translations Introduction Overview ...

  4. AMD和RequireJS初识----优化Web应用前端(按需动态加载JS)

    RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一.最新版本的RequireJS压缩后只有14K,堪称非常轻量.它还同时可以和其他的框架协同工作,使用Re ...

  5. xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西。xml里面的结构和数据库不一致..................

    xml的序列化与反序列化求一个好用的东西,类似,newtonsoft.net转json的东西.xml里面的结构和数据库不一致..................

  6. 将Excel中读取的科学计数法表示的Double数据转换为对应的字符串

    已在SegmentFault提问,目前没有答案,自行实现如下: private static String getRealNumOfScientificNotation(String doubleSt ...

  7. 创建并调用 DLL(1)

    //通过 DLL Wizard 建立: library TestDLL; uses   SysUtils,   Classes,   Dialogs; {$R *.res} //建立过程 proced ...

  8. linux中sftp默认登录的端口号是多少? sftp通过指定的端口号连接?sftp默认端口号

    需求描述: 今天一个同事,遇到个问题,程序连接sftp服务器连接不上,问我端口号是多少, 我想了一下是21还是22,所以就做了测试,发现sftp默认的连接端口号是22, 在此做下记录. 操作过程: 1 ...

  9. Credential

    https://www.cnblogs.com/Hawk-Hong/p/4293651.html 在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑以下问题: ...

  10. nuget修改配置文件

    https://www.cnblogs.com/seejoy/p/8093837.html 然后将文件解压到需要打包的工程解决方案根目录下. 然后修改nuget文件夹下的 UploadNupkg.ex ...