Java-JsonUtil工具类
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class JsonUtil {
/**
* 对象转换成JSON字符串
*
* @param obj
* 需要转换的对象
* @return 对象的string字符
*/
public static String objToJson(Object obj) {
JSONObject jSONObject = JSONObject.fromObject(obj);
return jSONObject.toString();
}
/**
* JSON字符串转换成对象
*
* @param jsonString
* 需要转换的字符串
* @param type
* 需要转换的对象类型
* @return 对象
*/
public static <T> T jsonToBean(String jsonString, Class<T> type) {
JSONObject jsonObject = JSONObject.fromObject(jsonString);
return jsonToBean(jsonObject, type);
}
/**
* jsonObject 转换为javabean
*
* @param jsonObject
* @param type
* @return
*/
@SuppressWarnings("unchecked")
public static <T> T jsonToBean(JSONObject jsonObject, Class<T> type) {
return (T) JSONObject.toBean(jsonObject, type);
}
/**
* json 转换为 beanList
*
* @param jsonArray
* @param type
* @return
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static List jsonToBeanList(JSONArray jsonArray, Class type) {
List<Object> list = new ArrayList<Object>();
for (Object obj : jsonArray) {
if (obj instanceof JSONArray) {
list.add(jsonToBeanList((JSONArray) obj, type));
} else if (obj instanceof JSONObject) {
list.add(jsonToBean((JSONObject) obj, type));
} else {
list.add(obj);
}
}
return list;
}
/**
* 将JSONArray对象转换成list集合
*
* @param jsonArr
* @return
*/
public static List<Object> jsonToMapList(JSONArray jsonArr) {
List<Object> list = new ArrayList<Object>();
for (Object obj : jsonArr) {
if (obj instanceof JSONArray) {
list.add(jsonToMapList((JSONArray) obj));
} else if (obj instanceof JSONObject) {
list.add(jsonToMap((JSONObject) obj));
} else {
list.add(obj);
}
}
return list;
}
/**
* 将json字符串转换成map对象
*
* @param json
* @return
*/
public static Map<String, Object> jsonToMap(String json) {
JSONObject obj = JSONObject.fromObject(json);
return jsonToMap(obj);
}
/**
* 将JSONObject转换成map对象
*
* @param json
* @return
*/
public static Map<String, Object> jsonToMap(JSONObject obj) {
Set<?> set = obj.keySet();
Map<String, Object> map = new HashMap<String, Object>(set.size());
for (Object key : obj.keySet()) {
Object value = obj.get(key);
if (value instanceof JSONArray) {
map.put(key.toString(), jsonToMapList((JSONArray) value));
} else if (value instanceof JSONObject) {
map.put(key.toString(), jsonToMap((JSONObject) value));
} else {
map.put(key.toString(), obj.get(key));
}
}
return map;
}
}
Java-JsonUtil工具类的更多相关文章
- Java Properties工具类详解
1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...
- Java json工具类,jackson工具类,ObjectMapper工具类
Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java并发工具类 - CountDownLatch
Java并发工具类 - CountDownLatch 1.简介 CountDownLatch是Java1.5之后引入的Java并发工具类,放在java.util.concurrent包下面 http: ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
- MinerDB.java 数据库工具类
MinerDB.java 数据库工具类 package com.iteye.injavawetrust.miner; import java.sql.Connection; import java.s ...
- 小记Java时间工具类
小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- java日期工具类DateUtil-续一
上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...
随机推荐
- 记录一次maven打包时将test目录下的类打包到jar中,Maven Assembly Plugin的使用
今天有人问我打包后找不到主类,运行的类写在test中.按照常规,test目录下的文件不会打包到jar包中.(但是我测试一个springboot工程就可以,这里之后再研究) 具体解决如下 第一步:在po ...
- 解决Win7上的连接access数据库的问题
最近做了一个win桌面程序,没有用sql 数据库,而是用access数据库,因为access比sql用起来方便多了,最主要是不要安装sql server,直接放在程序里面,然后创建连接字符就可以了,s ...
- MySQL_bigint(20) 是什么意思?
MySQL_bigint(20) 是什么意思? MySQL的整型类型有这样几种: 类型 存储空间 M默认值(显示宽度) 数据大小(无符号:unsigned) 描述 1 tinyint(M) 1 t ...
- 【python tkinter】对于窗口存在的认识
今天写了messagebox(信息提示框) 和 inputbox(输入框). 对于 [窗口] 有了新的认识... 发现一个奇怪的事情(虽然原因很简单啦······) def msg_box(titl ...
- T100——接口代码记录,jsonArray和json
{<section id="cs_t1client.description" >} #應用 a00 樣板自動產生(Version:) #+ Version..: T10 ...
- Go语言GOMAXPROCS(调整并发的运行性能)
在 Go语言程序运行时(runtime)实现了一个小型的任务调度器.这套调度器的工作原理类似于操作系统调度线程,Go 程序调度器可以高效地将 CPU 资源分配给每一个任务.传统逻辑中,开发者需要维护线 ...
- Elastic Search快速上手(1):简介及安装配置
前言 最近开始尝试学习Elastic Search,因此决定做一些简单的整理,以供后续参考,快速上手使用ES. 简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多 ...
- 2 - sat 模板(自用)
2-sat一个变量两种状态符合条件的状态建边找强连通,两两成立1 - n 为第一状态(n + 1) - (n + n) 为第二状态 例题模板 链接一 POJ 3207 Ikki's Story IV ...
- MySQL中的主键约束和外键约束
1.主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如 ...
- JSON函数表2
[class] Json::Reader [public] [将字符串或者输入流转换为JSON的Value对象] bool parse( const std::string &document ...