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);
*/ }
}
JSONUtil(JAVA对象/List与json互转,xml与json互转)的更多相关文章
- org.json里实现XML和JSON之间对象互转
org.json包里有一个类org.json.XML可以实现XML和JSON之间的转换.http://www.json.org/javadoc/org/json/XML.html JSONObject ...
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- 什么是json? 什么是xml?JSON与XML的区别比较
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.它是基于 JavaScript Prog ...
- XML 和 java对象相互转换
XML 和 java对象相互转换 博客分类: XML 和 JSON 下面使用的是JDK自带的类,没有引用任何第三方jar包. Unmarshaller 类使客户端应用程序能够将 XML 数据转换为 ...
- JSON字符串与java对象的转换
所需的jar包: 1.commons-lang.jar 2.commons-beanutils.jar 3.commons-collections.jar 4.commons-logging.jar ...
- JSON 字符串 与 java 对象的转换
jsonLib 经典文章:http://json-lib.sourceforge.net/xref-test/net/sf/json/TestJSONObject.html // 引入相应的包 //j ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
- json、xml和java对象之间的转化
其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...
- jackson java对象和json对象的互相转换
概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...
随机推荐
- MindManager篇
MindManager:新建脑图 MindManager:大纲视图(批阅文档结构) MindManager:导出为其他格式 MindManager:插入基本插入主题.备注,标记等) MindManag ...
- Centos6.8/7.0搭建Git服务http访问方式
安装Git版本:git 2.10.0 Git访问方式:基于http的基本验证(非SSL) 1. 安装Apache软件: [root@localhost ~]# yum install httpd 设置 ...
- Linux 快速删除大量小文件方法
进行以下两步操作即可: 1.第一步:创建空的文件夹: mkdir /tmp/blank 2.第二步:执行以下命令:rsync --delete-before -d /tmp/blank/ /home ...
- Ubuntu下 Oracle sqldeveloper中文目录、文件,select查询结果中:中文乱码
是由于JDK所致.下面是网上的解决方案 解决案例1: .0_24/jre/lib/fonts.进入到fonts目录,新建文件夹 fallback cd /usr/java/jdk1..0_24/jre ...
- 有限状态机FSM详解及其实现
有限状态机,也称为FSM(Finite State Machine),其在任意时刻都处于有限状态集合中的某一状态.当其获得一个输入字符时,将从当前状态转换到另一个状态,或者仍然保持在当前状态.任何一个 ...
- 腾讯QQ空间超分辨率技术TSR
腾讯QQ空间超分辨率技术TSR:为用户节省3/4流量,处理效果和速度超谷歌RAISR 雷锋网AI科技评论: 随着移动端屏幕分辨率越来越高,甚至像iPhone更有所谓的“视网膜屏”,人们对高清图片的诉求 ...
- VS2010属性表的建立与灵活运用
问题引入:在VS2010当中,进行opencv.QT等的编程时,总是需要配置很多属性还有依赖项等,为了减少每次都重复配置属性的工作量,现在可以运行属性表这个东西来简化配置.opencv也可以这样建立使 ...
- c# JsonHelper类
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- nyoj-655-光棍的yy(大数)
光棍的yy 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 yy常常遇见一个奇怪的事情.每当他看时间的时候总会看见11:11,这个非常纠结啊. 如今给你m个1,你能够 ...
- swift - 之 UIColor使用自定义的RGB配色
1.10进制颜色 UIColor(red: /, green: /, blue: /, alpha: 0.5) 2.16进制颜色 UIColor(red: , green: , blue: , alp ...