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. 什么是Apache ZooKeeper?

    Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据.ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务. Zo ...

  2. C++ 判断

    C++ 判断判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的). #include <iostream> /* ru ...

  3. (转)x264 编码流程

    转自:http://alphamailpost.blog.163.com/blog/static/20111808120128111160728/ http://www.usr.cc/thread-5 ...

  4. 鼠标捕获(setCapture,releaseCapture)的学习

    鼠标捕获(setCapture)作用是将鼠标事件捕获到当前文档的指定的对象——对指定的对象设置鼠标捕获.这个对象会为当前应用程序或整个系统接收所有鼠标事件. 所谓鼠标捕获,是指对鼠标事件(onmous ...

  5. Ubuntu server版上使用命令行操作VPNclient

    Ubuntu server版上使用命令行操作VPNclient VPN,虚拟专用网络,这个技术还是非常有用的.近期笔者參与的项目中就使用上了VPN,大概情况是这种.有两个开发团队,在异地,代码服务器在 ...

  6. MindManager篇

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

  7. 为什么要整合apache 和tomcat?

    1. Apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展. 2. Apache和Tomcat都可以做为独立的web服务器来运行,但是A ...

  8. Extjs 下拉框

    刚刚熟练了easyui控件的使用,又開始了如今的这个项目. 这个项目是个半成品.前端使用的是Extjs控件,jsp中没有代码.就引用了非常多的js...于是乎有种不知所措了呀. . . 说实话特别的不 ...

  9. 使用 JMeter 完成常用的压力测试 [转]

    讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的 ...

  10. CSS Sprite的应用

    什么是CSS Sprite ? 不知道您在浏览yahoo.com的网页中是否注意到,yahoo在页面制作上的技术和大多数网站不一样,他们把页面上的 ICON,栏目背景啊,图片按钮啊等都有会有规则的合并 ...