Android开发:Json字符串到Json对象万能解析器

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

创新互联建站主营广河网站建设的网络公司,主营网站建设方案,成都APP应用开发,广河h5微信小程序开发搭建,广河网站营销推广欢迎广河等地区企业咨询

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

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

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

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

    网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联