关于getJSONObject与optJSONObject的区别?
来源:互联网 发布:java opc 编辑:程序博客网 时间:2024/06/05 03:08
*json解析常见问题:
getJSONObject与optJSONObject的区别,下面结合源码和案例来分析当我们使用这两周方法来解析数据时,哪种比较好.
源码分析:
//使用getJSONObject时,如果返回的对象不是JSONObject,抛出JSONException异常 /** * Returns the value mapped by {@code name} if it exists and is a {@code * JSONObject}. * @throws JSONException if the mapping doesn't exist or is not a {@code * JSONObject}. */ public JSONObject getJSONObject(String name) throws JSONException { Object object = get(name); if (object instanceof JSONObject) { return (JSONObject) object; } else { throw JSON.typeMismatch(name, object, "JSONObject"); } }//使用optJSONObject时,当返回结果不是JSONObject时,这里不会抛异常,而是返回null /** * Returns the value mapped by {@code name} if it exists and is a {@code * JSONObject}. Returns null otherwise. */ public JSONObject optJSONObject(String name) { Object object = opt(name); return object instanceof JSONObject ? (JSONObject) object : null; }
/** * 伪代码如下 **/ public class GetGoodsCollectListFactory { private String ERROR_MSG = "errorMsg"; private String ERROR_CODE = "errorCode"; private String RESULT = "result"; /** * 商品列表,解析获取到的json数据 * * @param param * @return */ public CollectListInfo getGoodsCollectListParse(String param) { String BOOK_MARK_BO_LIST = "favorGoodsList"; CollectListInfo collectList = new CollectListInfo(); List<CollectInfo> list = new ArrayList<CollectInfo>(); ResponseInfo responseInfo = null; CollectInfo info = null; try { // 请求获取json结果 JSONObject jsonObject = new JSONObject(HttpRequestClient.executeRequest(Constant.Url.GET_FOLLOW_GOODS_URL, param, true)); responseInfo = new ResponseInfo(); if (jsonObject.getBoolean(RESULT)) { responseInfo.setResult(true); JSONArray jsonArray = jsonObject.getJSONArray(BOOK_MARK_BO_LIST); collectList.setTotalPage(jsonObject.getInt(Constant.TOTAL_PAGE_NAME)); for (int i = 0; i < jsonArray.length(); i++) { info = collectList.getCollectInfo(); SONObject object = jsonArray.getJSONObject(i); JSONArray activityItemList = object.optJSONArray("activityItemList"); ArrayList<ActivityCollectInfo> activityCollectInfos = new ArrayList<ActivityCollectInfo>(); //因为object.optJSONArray("activityItemList");如果解析不到会直接返null if (activityItemList != null && activityItemList.size() > 0) { for (int j = 0; j < activityItemList.length(); j++) { //使用optJSONObject(i)会莫名解析不了下面数据:如optString("activityId")); // 当activityid为null时,不会抛错,但是下面的方法不走,因此换用getJSONObject(i); //JSONObject activityItemobj = activityItemList.optJSONObject(i); JSONObject activityItemobj = activityItemList.getJSONObject(i); ActivityCollectInfo activityCollectInfo = new ActivityCollectInfo(); activityCollectInfo.setActivityId(activityItemobj.optString("activityId")); activityCollectInfo.setActivityName(activityItemobj.optString("activityName")); activityCollectInfo.setActivityType(activityItemobj.optInt("activityType")); activityCollectInfo.setLargessFlag(activityItemobj.optInt("largessFlag")); activityCollectInfo.setLargessMoney(activityItemobj.optInt("largessMoney")); activityCollectInfo.setLargessNumber(activityItemobj.optInt("largessNumber")); activityCollectInfos.add(activityCollectInfo); } ... } }
此篇文章是转载别人的一篇文章,仅用于收集
http://blog.csdn.net/relicemxd/article/details/50351094
0 0
- 关于getJSONObject与optJSONObject的区别?
- getJSONObject与optJSONObject的区别
- JSON解析之optJSONObject与getJSONObject的区别
- getJSONObject与optJSONObject的区别,结合源码分析
- 初学者的问题 关于->与.的区别
- 关于getDeclaredMethods与getMethods的的区别
- [毕业论文] 关于char 与 varchar 的区别
- 关于编译器与解释器的区别
- 关于innerText与innerHTML的区别
- 关于echo与print语句的区别
- 关于线程与进程的区别
- linux关于bashrc与profile的区别
- 关于registerstartupscript与RegisterClientScriptBlock的区别
- 关于MySQL与Oracle的区别
- linux关于bashrc与profile的区别
- 关于char*与char[]的区别
- 关于close与shutdown的区别
- 关于/与%运算符的区别
- 表单外超链同时提交表单内标签和超链url(超链接提交表单同时传值给另一个页面)
- java中的异常
- 【Node.js】 运行在服务端的 JavaScript
- sqlserver下 代码实现数据库附加和分离
- centos docker安装
- 关于getJSONObject与optJSONObject的区别?
- iOS之应用数据存储常用的五种方式(一)
- Oracle错误代码大全
- Kafka深度解析
- C++primier总结
- 对EOF的理解(整理)
- Leetcode434. Number of Segments in a String
- 机器学习评价指标大汇总
- bootstrap模态框弹窗导致页面左移