JSON

Json字符串转换为java对象的各种实现方法(2)

字号+ 作者:H5之家 来源:H5之家 2017-02-02 08:00 我要评论( )

3.使用最轻量级的org.json.jar实现json字符串和java对象之间的互转 所需jar包:org.json.jar 下载地址: 或第三方: 同样实现对json字符串转换为Map、List集合,代码如下: package util; import java.util.ArrayLi

    3.使用最轻量级的org.json.jar实现json字符串和java对象之间的互转
       所需jar包:org.json.jar
       下载地址:  或第三方:

       同样实现对json字符串转换为Map、List集合,代码如下:


package util; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * 此类是处理json字符串的工具类 * * @author xiaomeng * @since 2013-08-27 * */ public class JSONHelper { /** * 将json字符串转换为List集合 * * @param jsonArrStr * @return */ public static List<Map<String, Object>> jsonObjList(String jsonArrStr) { List<Map<String, Object>> jsonList = new ArrayList<Map<String, Object>>(); JSONArray jsonArr = null; try { jsonArr = new JSONArray(jsonArrStr); jsonList = (List<Map<String, Object>>)JSONHelper.jsonToList(jsonArr); } catch (JSONException e) { System.out.println("Json字符串转换异常!"); e.printStackTrace(); } return jsonList; } /** * 将json对象的键值存放在集合,映射table的column * * @param map * @return */ public static List<String> jsonMapKeysList(Map<?, ?> map) { List<String> jsonjsonList = new ArrayList<String>(); String columnStr = "column"; for (int i = 0; i < map.keySet().size(); i++) { jsonjsonList.add(columnStr + (i + 1)); } System.out.println(jsonjsonList.size()); return jsonjsonList; } /** * 将传递近来的json数组转换为List集合 * * @param jsonArr * @return * @throws JSONException */ private static List<?> jsonToList(JSONArray jsonArr) throws JSONException { List<Object> jsonToMapList = new ArrayList<Object>(); for (int i = 0; i < jsonArr.length(); i++) { Object object = jsonArr.get(i); if (object instanceof JSONArray) { jsonToMapList.add(JSONHelper.jsonToList((JSONArray) object)); } else if (object instanceof JSONObject) { jsonToMapList.add(JSONHelper.jsonToMap((JSONObject) object)); } else { jsonToMapList.add(object); } } return jsonToMapList; } /** * 将传递近来的json对象转换为Map集合 * * @param jsonObj * @return * @throws JSONException */ @SuppressWarnings("unchecked") private static Map<String, Object> jsonToMap(JSONObject jsonObj) throws JSONException { Map<String, Object> jsonMap = new HashMap<String, Object>(); Iterator<String> jsonKeys = jsonObj.keys(); while (jsonKeys.hasNext()) { String jsonKey = jsonKeys.next(); Object jsonValObj = jsonObj.get(jsonKey); if (jsonValObj instanceof JSONArray) { jsonMap.put(jsonKey, JSONHelper.jsonToList((JSONArray) jsonValObj)); } else if (jsonValObj instanceof JSONObject) { jsonMap.put(jsonKey, JSONHelper.jsonToMap((JSONObject) jsonValObj)); } else { jsonMap.put(jsonKey, jsonValObj); } } return jsonMap; } }

以上三种常用的json和java对象之间的互相转换方法各有其特点,根据我的小经验,现将其优缺点总如下,供参考!
    1.json_lib json解析框架
       优点:各种复杂json格式和对json处理的一般需求都可以做到
       缺点:所需支持的jar文件较多,并且关于jar包版本或许会出现一些杂七杂八的问题
    2.谷歌Gson对json的解析:
       优点:(1)。可以谷歌的Gson就是为处理java对象和json之间转换开发的框架,其可以很简单、方便的对封装的java对象和json格式文本之间的转换,包括java工具类集合之间的转换也很方便;(2)。相对json_lib框架来说,只需要一个Gson.jar就可以,需要jar文件数量少;
       缺点:由于其相对来说偏向于处理java对象和json之间的转换,所以其只简单的处理json字符串和集合类之间的转换稍微需要一个过渡,就是使用反射确定转换的java对象类型。
     3.org.json框架
       优点:在这三者之中,其实最轻量级、同谷歌Gson一样所需jar文件也是最少的一种方法,并且其在处理json字符串到java集合的转黄相对简便
缺点:相对Gson处理java对象和json之间的转换比较费事
综述:这三种解析json的方法各有优缺点,具体可根据自己需求选择使用。

 

延伸阅读:

返回到首页 返回到编程大巴

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 使用PHP从MySQL创建JSON并用JQuery解析

    使用PHP从MySQL创建JSON并用JQuery解析

    2017-02-02 08:00

  • 打印json的错误级别json

    打印json的错误级别json

    2017-02-01 18:02

  • Android中的JSON详细总结

    Android中的JSON详细总结

    2017-02-01 13:00

  • JSON数据中有null导致数据加载失败的解决办法

    JSON数据中有null导致数据加载失败的解决办法

    2017-02-01 12:04

网友点评
p