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. 在linux上开发210的hdmi-servers输出

    这段时间一直在研究hdmi-servers,因为友善对这个在是闭源的,所以由于兴趣的关系和工作的关系,决定自己写一个hdmi-servers. 在hdmi中,最关键的是弄清楚了Hdmi显示数据的怎么来 ...

  2. MindManager篇

    MindManager:新建脑图 MindManager:大纲视图(批阅文档结构) MindManager:导出为其他格式 MindManager:插入基本插入主题.备注,标记等) MindManag ...

  3. par函数pch参数-控制点的形状

    pch函数用来控制点的形状,这个参数不仅在par函数中有,在大多数的高级绘图函数中都有. 代码示例: plot(rep(1:5, times = 5), rep(5:1, each = 5), pch ...

  4. jQuery中return false,e.preventDefault(),e.stopPropagation()的区别

    e.stopPropagation()阻止事件冒泡 <head> <title></title> <script src="Scripts/jQue ...

  5. linux常用命令中篇

    1.打印当月的日期

  6. java 正则表达式验证

    package com.fsti.icop.util.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...

  7. ros网址链接

    安装教程:http://wiki.ros.org/cn/indigo/Installation robotics:http://www.rethinkrobotics.com/ 学习教程:http:/ ...

  8. Mongodb 与sql 语句对照

    此处用mysql中的sql语句做例子,C# 驱动用的是samus,也就是上文中介绍的第一种. 引入项目MongoDB.dll //创建Mongo连接 var mongo = new Mongo(&qu ...

  9. thinkjs——redis

    前言: 后台某些操作的时候会用到缓存:比如用户登录或者校验次数的情景.而本次遇见的状况就是在点击“推送”按钮的时候,需要判断缓存中是否有其值,并将其次数限制为固定值. 过程: 刚听到此需求的时候,首先 ...

  10. js里面setInterval和setTimeout相同点和区别

    相同点:两个方法都是先触发间隔时间,再触发回调函数 区别: 1.setInterval每隔指定的时间就执行一次表达式,若不停止会一直执行下去 而setTimeout在执行时,是在载入后延迟指定时间后, ...