json字符串到json对象万能解析器(java实现,就一百来行代码)_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > json字符串到json对象万能解析器(java实现,就一百来行代码)

json字符串到json对象万能解析器(java实现,就一百来行代码)

 2013/7/22 14:41:09  西门客  博客园  我要评论(0)
  • 摘要:json字符串到json对象万能转换器(java实现),就一百来行代码,非常轻量小巧。对于一般应用场景资源消耗非常低,速度也足够快,尤其适用于Android应用开发。通过CommonJSONParser可以把json字符串转换为包含Map、List、String、Integer等标准Java对象的集合,具体使用方法:CommonJSONParsercommonJSONParser=newCommonJSONParser();Map<String,Object>
  • 标签:实现 Java 代码 字符串 JSON 解析 JS

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

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

  CommonJSONParser commonJSONParser = new CommonJSONParser();
  Map<String, Object> 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<String, Object> parse(String jsonStr) {
14 
15         Map<String, Object> 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<Object> parseJSONArray(JSONArray jsonArray) throws JSONException {
51 
52         List<Object> valueList = null;
53 
54         if (null != jsonArray) {
55             valueList = new ArrayList<Object>();
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<String, Object> parseJSONObject(JSONObject jsonObject) throws JSONException {
69 
70         Map<String, Object> valueObject = null;
71         if (null != jsonObject) {
72             valueObject = new HashMap<String, Object>();
73 
74             Iterator<String> 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 }

 

上一篇: 小米天猫官方旗舰店开业了 下一篇: 没有下一篇了!
发表评论
用户名: 匿名