Json工具类
来源:互联网 发布:快手特效软件视频软件 编辑:程序博客网 时间:2024/06/05 07:28
原文链接:http://blog.163.com/beiju01@126/blog/static/36541934201041435628256/
jqGrid在处理多字段查询的时候要使用json数据,于是,参考了网上的一些写法,写了一个json工具类。其中那个时间格式化,是为了解决 json在处理java的java.util.Date出现的问题。
代码如下:
jqGrid在处理多字段查询的时候要使用json数据,于是,参考了网上的一些写法,写了一个json工具类。其中那个时间格式化,是为了解决 json在处理java的java.util.Date出现的问题。
代码如下:
Java代码
- @SuppressWarnings("unchecked")
- public class JsonUtils {
- /**
- * 从一个JSON 对象字符格式中得到一个java对象,形如:
- * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...}}
- * @param object
- * @param clazz
- * @return
- */
- public static Object getDTO(String jsonString, Class clazz) {
- JSONObject jsonObject = null;
- try {
- setDataFormat2JAVA();
- jsonObject = JSONObject.fromObject(jsonString);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JSONObject.toBean(jsonObject, clazz);
- }
- /**
- * 从一个JSON 对象字符格式中得到一个java对象,其中beansList是一类的集合,形如:
- * {"id" : idValue, "name" : nameValue, "aBean" : {"aBeanId" : aBeanIdValue, ...},
- * beansList:[{}, {}, ...]}
- * @param jsonString
- * @param clazz
- * @param map 集合属性的类型 (key : 集合属性名, value : 集合属性类型class) eg: ("beansList" : Bean.class)
- * @return
- */
- public static Object getDTO(String jsonString, Class clazz, Map map) {
- JSONObject jsonObject = null;
- try {
- setDataFormat2JAVA();
- jsonObject = JSONObject.fromObject(jsonString);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return JSONObject.toBean(jsonObject, clazz, map);
- }
- /**
- * 从一个JSON数组得到一个java对象数组,形如:
- * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
- * @param object
- * @param clazz
- * @return
- */
- public static Object[] getDTOArray(String jsonString, Class clazz) {
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- Object[] obj = new Object[array.size()];
- for (int i = 0; i < array.size(); i++) {
- JSONObject jsonObject = array.getJSONObject(i);
- obj[i] = JSONObject.toBean(jsonObject, clazz);
- }
- return obj;
- }
- /**
- * 从一个JSON数组得到一个java对象数组,形如:
- * [{"id" : idValue, "name" : nameValue}, {"id" : idValue, "name" : nameValue}, ...]
- * @param object
- * @param clazz
- * @param map
- * @return
- */
- public static Object[] getDTOArray(String jsonString, Class clazz, Map map) {
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- Object[] obj = new Object[array.size()];
- for (int i = 0; i < array.size(); i++) {
- JSONObject jsonObject = array.getJSONObject(i);
- obj[i] = JSONObject.toBean(jsonObject, clazz, map);
- }
- return obj;
- }
- /**
- * 从一个JSON数组得到一个java对象集合
- * @param object
- * @param clazz
- * @return
- */
- public static List getDTOList(String jsonString, Class clazz) {
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- List list = new ArrayList();
- for (Iterator iter = array.iterator(); iter.hasNext();) {
- JSONObject jsonObject = (JSONObject) iter.next();
- list.add(JSONObject.toBean(jsonObject, clazz));
- }
- return list;
- }
- /**
- * 从一个JSON数组得到一个java对象集合,其中对象中包含有集合属性
- * @param object
- * @param clazz
- * @param map 集合属性的类型
- * @return
- * class MyBean{
- * private List data;
- * // getters & setters
- * }
- *
- * class Person{
- * private String name;
- * // getters & setters
- * }
- *
- * ...
- *
- * String json = "{'data':[{'name':'Wallace'},{'name':'Grommit'}]}";
- * Map classMap = new HashMap();
- * classMap.put( "data", Person.class );
- * MyBean bean = JSONObject.toBean( JSONObject.fromObject(json), MyBean.class, classMap );
- */
- public static List getDTOList(String jsonString, Class clazz, Map map) {
- setDataFormat2JAVA();
- JSONArray array = JSONArray.fromObject(jsonString);
- List list = new ArrayList();
- for (Iterator iter = array.iterator(); iter.hasNext();) {
- JSONObject jsonObject = (JSONObject) iter.next();
- list.add(JSONObject.toBean(jsonObject, clazz, map));
- }
- return list;
- }
- /**
- * 从json HASH表达式中获取一个map,该map支持嵌套功能
- * 形如:{"id" : "johncon", "name" : "小强"}
- * 注意commons-collections版本,必须包含org.apache.commons.collections.map.MultiKeyMap
- * @param object
- * @return
- */
- public static Map getMapFromJson(String jsonString) {
- setDataFormat2JAVA();
- JSONObject jsonObject = JSONObject.fromObject(jsonString);
- Map map = new HashMap();
- for (Iterator iter = jsonObject.keys(); iter.hasNext();) {
- String key = (String) iter.next();
- map.put(key, jsonObject.get(key));
- }
- return map;
- }
- /**
- * 从json数组中得到相应java数组
- * json形如:["123", "456"]
- * @param jsonString
- * @return
- */
- public static Object[] getObjectArrayFromJson(String jsonString) {
- JSONArray jsonArray = JSONArray.fromObject(jsonString);
- return jsonArray.toArray();
- }
- /**
- * 把数据对象转换成json字符串
- * DTO对象形如:{"id" : idValue, "name" : nameValue, ...}
- * 数组对象形如:[{}, {}, {}, ...]
- * map对象形如:{key1 : {"id" : idValue, "name" : nameValue, ...}, key2 : {}, ...}
- * @param object
- * @return
- */
- public static String getJSONString(Object object) throws Exception {
- String jsonString = null;
- //日期值处理器
- JsonConfig jsonConfig = new JsonConfig();
- jsonConfig.registerJsonValueProcessor(java.util.Date.class,
- new JsonDateValueProcessor());
- if (object != null) {
- if (object instanceof Collection || object instanceof Object[]) {
- jsonString = JSONArray.fromObject(object, jsonConfig)
- .toString();
- } else {
- jsonString = JSONObject.fromObject(object, jsonConfig)
- .toString();
- }
- }
- return jsonString == null ? "{}" : jsonString;
- }
- private static void setDataFormat2JAVA() {
- //设定日期转换格式
- JSONUtils.getMorpherRegistry().registerMorpher(
- new DateMorpher(new String[] { "yyyy-MM-dd",
- "yyyy-MM-dd HH:mm:ss" }));
- }
- public static void main(String[] arg) throws Exception {
- String s = "{status : 'success'}";
- System.out.println(" object : " + JsonUtils.getJSONString(s));
- }
- }
- public class JsonDateValueProcessor implements JsonValueProcessor {
- private String format = "yyyy-MM-dd HH:mm:ss";
- public JsonDateValueProcessor() {
- }
- public JsonDateValueProcessor(String format) {
- this.format = format;
- }
- public Object processArrayValue(Object value, JsonConfig jsonConfig) {
- return process(value, jsonConfig);
- }
- public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
- return process(value, jsonConfig);
- }
- private Object process( Object value, JsonConfig jsonConfig ) {
- if (value instanceof Date) {
- String str = new SimpleDateFormat(format).format((Date) value);
- return str;
- }
- return value == null ? null : value.toString();
- }
- public String getFormat() {
- return format;
- }
- public void setFormat(String format) {
- this.format = format;
- }
- }
0 0
- JSON-json-lib-工具类
- JSON工具类JSONUtil
- JSON 工具类
- Json对象工具类
- JSON解析工具类
- Json工具类
- JSON工具类
- Json工具类
- JSON操作工具类
- Json工具类
- Json工具类
- 解析json工具类
- JSON解析工具类
- Json转换工具类
- Json处理工具类
- JSON工具类
- JSON 转换工具类
- json工具类
- javassist3.17.0-GA, 3.17.1-GA.jar包bug,java.lang.VerifyError: Inconsistent args count operand in invo
- iOS改变系统中的英文为汉语
- python查找元素
- Spring基础五之Springmvc和hibernate事务不提交
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)汇总函数
- Json工具类
- 数据库索引的作用和优点缺点
- HDU 4771 Stealing Harry Potter's Precious(BFS)
- 51nod 1024 矩阵中不重复的元素
- 使用js对日期的操作
- 用户态切换到内核态的3种方式
- FPGA功耗估计(二)
- [erlang]ets结合record的增删改查操作
- android 封装好的ViewPagerIndicator指示器