json字符串到json对象万能转换器(java实现),就一百来行代码,非常轻量小巧。对于一般应用场景资源消耗非常低,速度也足够快,尤其适用于Android应用开发。

通过CommonJSONParser可以把json字符串转换为包含Map、List、String、Integer等标准Java对象的集合,具体使用方法:

CommonJSONParser commonJSONParser = new CommonJSONParser();Map result = commonJSONParser.parse(jsonDataStr);

CommonJSONParser源代码如下(主要使用“递归”思想):

1 import java.util.ArrayList;  2 import java.util.HashMap;  3 import java.util.Iterator;  4 import java.util.List;  5 import java.util.Map;  6   7 import org.json.JSONArray;  8 import org.json.JSONException;  9 import org.json.JSONObject; 10  11 public class CommonJSONParser { 12  13     public Map parse(String jsonStr) { 14  15         Map result = null; 16  17         if (null != jsonStr) { 18             try { 19  20                 JSONObject jsonObject = new JSONObject(jsonStr); 21                 result = parseJSONObject(jsonObject); 22  23             } catch (JSONException e) { 24                 // TODO Auto-generated catch block 25                 e.printStackTrace(); 26             } 27         } // if (null != jsonStr) 28  29         return result; 30     } 31  32     private Object parseValue(Object inputObject) throws JSONException { 33         Object outputObject = null; 34  35         if (null != inputObject) { 36  37             if (inputObject instanceof JSONArray) { 38                 outputObject = parseJSONArray((JSONArray) inputObject); 39             } else if (inputObject instanceof JSONObject) { 40                 outputObject = parseJSONObject((JSONObject) inputObject); 41             } else if (inputObject instanceof String || inputObject instanceof Boolean || inputObject instanceof Integer) { 42                 outputObject = inputObject; 43             } 44  45         } 46  47         return outputObject; 48     } 49  50     private List parseJSONArray(JSONArray jsonArray) throws JSONException { 51  52         List valueList = null; 53  54         if (null != jsonArray) { 55             valueList = new ArrayList(); 56  57             for (int i = 0; i < jsonArray.length(); i++) { 58                 Object itemObject = jsonArray.get(i); 59                 if (null != itemObject) { 60                     valueList.add(parseValue(itemObject)); 61                 } 62             } // for (int i = 0; i < jsonArray.length(); i++) 63         } // if (null != valueStr) 64  65         return valueList; 66     } 67  68     private Map parseJSONObject(JSONObject jsonObject) throws JSONException { 69  70         Map valueObject = null; 71         if (null != jsonObject) { 72             valueObject = new HashMap(); 73  74             Iterator keyIter = jsonObject.keys(); 75             while (keyIter.hasNext()) { 76                 String keyStr = keyIter.next(); 77                 Object itemObject = jsonObject.opt(keyStr); 78                 if (null != itemObject) { 79                     valueObject.put(keyStr, parseValue(itemObject)); 80                 } // if (null != itemValueStr) 81  82             } // while (keyIter.hasNext()) 83         } // if (null != valueStr) 84  85         return valueObject; 86     } 87 }

更多相关文章

  1. Android(安卓)5.0 Lollipop新的摄像头API
  2. Android磁盘管理-之vold源码分析(2)
  3. Android中StringBuilder与 StringBuffer区别
  4. Android的四个组件类型的使用实例
  5. Android(安卓)判断程序是否是第一次启动
  6. android 判断字符串是否为空的最优方法
  7. android中-----JSON数据解析
  8. android media server 解析1-media player service 结构部分
  9. [Android] Dagger2 入门 2

随机推荐

  1. SDK下载地址
  2. android 图片处理
  3. Android(安卓)basic1
  4. Android7.0中文API -- SeekBar
  5. Android圆型头像实现
  6. 【Android】自定义 Tabhost
  7. Android(安卓)SystemClock
  8. Android(安卓)basic1
  9. 怎样更新Android(安卓)SDK1.1 到 Android
  10. Android(安卓)HTTP框架Volley详解