JSON入门学习第三节
2010-11-10 16:33
405 查看
JSON数据与Java对象之间的转换:
将Java对象转换成JSON格式
public class JsonUtil { /** 页面传至后台时,json数据在request的参数名称 */ public final static String JSON_ATTRIBUTE = "json"; public final static String JSON_ATTRIBUTE1 = "json1"; public final static String JSON_ATTRIBUTE2 = "json2"; public final static String JSON_ATTRIBUTE3 = "json3"; public final static String JSON_ATTRIBUTE4 = "json4"; /** * 从一个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 */ 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 : " + JsonUtil.getJSONString(s)); } }
将Java对象转换成JSON格式
import java.text.SimpleDateFormat; import java.util.Date; import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor; /* * @author johncon * 创建日期 2008-9-10 * json日期值处理器 */ 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; } }
相关文章推荐
- JSON--JSON学习入门(了解什么是JSON)
- [学习笔记]JSON for java入门总结
- 【W3s学JSON】JSON入门概念学习笔记 _W3school
- JSON入门学习案例笔记
- iOS入门学习(json解析)
- Hook学习资料整理第三节-----hook入门 孙鑫课程
- salesforce 零基础开发入门学习(十三)salesforce中JSON的使用
- json 入门学习笔记 示例代码
- Json.Net6.0入门学习试水篇
- mybatis学习-入门(4)-一个完整的web例子,通过json将字符串传递给前台,然后显示出来
- 安卓开发,与后台服务器对接中,JSON解析入门学习
- Json.Net6.0入门学习试水篇
- JSON入门级学习小结--JSON数据结构
- JSON入门学习第一节
- JSON入门学习第二节
- JSON入门学习第四节
- JSON入门级学习小结--JSON数据结构
- Vue入门学习-使用服务器传来的JSON数据交给Vue渲染HTML页面
- JSON学习笔记一:JSON入门,JSON初识
- json 入门学习笔记 示例代码