java中使用net.sf.json对json进行解析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中使用net.sf.json对json进行解析相关的知识,希望对你有一定的参考价值。
net.sf.json依赖的包很多。
有commons-collections,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph-1.0.5.jar,morph-1.1.1.jar
- /**
- * 从一个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;
- }
以上是关于java中使用net.sf.json对json进行解析的主要内容,如果未能解决你的问题,请参考以下文章
急!ssh+json 空指针异常(net.sf.json.JSONException: java.lang.NullPointerException)
Java - net.sf.json 之 putaccumulateelement 实践与疑问
使用json发生java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常的解决办法
未找到 Java 类型、net.sf.json.JSONObject 类和 MIME 媒体类型 application/json 的消息正文编写器