分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

关于JSONObject取值方法getString()与optString()

发布时间:2023-09-06 02:03责任编辑:蔡小小关键词:暂无标签

用JSON这么久,刚发现JSONObject的getString()暗藏炸弹!!!

public Map<String, Object> queryalmMonitorInfo(@RequestBody String jsonStr) ???{ ???????JSONObject json = JSONObject.fromObject(jsonStr); ???????// 当前页码 ???????int currentPage = json.getInt(SysConstant.PAGE); ???????// 每页条数 ???????int pageSize = json.getInt(SysConstant.ROWS); ???????Map<String, Object> mape = new HashMap<String, Object>(); ???????String areaid = json.getString("areaids"); ???????JSONArray areaids = JSONArray.fromObject(areaid); ???????@SuppressWarnings("unchecked") ???????List<String> areaIdlist = (List<String>) JSONArray.toCollection(areaids, ???????????????String.class); ???????String sysAndeqp = json.getString("eqpLists"); ???????List<String> eqpLists; ???????if ("".equals(sysAndeqp)) { ???????????eqpLists = null; ???????} ???????else { ???????????JSONArray eqpList = JSONArray.fromObject(sysAndeqp); ???????????eqpLists = (List<String>) JSONArray.toCollection(eqpList, ???????????????????String.class); ???????} ???????String sysEmsId = json.getString("sysEmsId"); ???????String techType = json.getString("techType"); ???????List<String> sysEmsIds; ???????if ("".equals(sysEmsId)) { ???????????sysEmsIds = null; ???????} ???????else { ???????????/* ????????????* JSONArray sysEmsIdList = JSONArray.fromObject(sysEmsId); ????????????* sysEmsIds = (List<String>) JSONArray.toCollection(sysEmsIdList, ????????????* String.class); ????????????*/ ???????????String[] arr = sysEmsId.split(","); ???????????sysEmsIds = Arrays.asList(arr); ???????} ???????List<String> techTypes; ???????if ("".equals(techType)) { ???????????techTypes = null; ???????} ???????else { ???????????/* ????????????* JSONArray techTypeList = JSONArray.fromObject(techType); ????????????* techTypes = (List<String>) JSONArray.toCollection(techTypeList, ????????????* String.class); ????????????*/ ???????????String[] arr1 = techType.split(","); ???????????techTypes = Arrays.asList(arr1); ???????} ???????String keyword = json.getString("keyword"); ???????String alarmLevel = json.getString("alarmLevel"); ???????String neEmsId = json.getString("neEmsId"); ???????String shelfEmsId = json.getString("shelfEmsId"); ???????String slotEmsId = json.getString("slotEmsId"); ???????int cardEmsId = json.getInt("cardEmsId"); ???????String isConf = json.getString("isConf"); ???????String portEmsId = json.getString("portEmsId"); ???????PageVo pageVo = PageUtil.assemblePageVo(currentPage, pageSize); ???????mape.put("keyword", keyword); ???????mape.put("alarmLevel", alarmLevel); ???????mape.put("techType", techTypes); ???????mape.put("areaId", areaIdlist); ???????mape.put("sysEmsId", sysEmsIds); ???????mape.put("neEmsId", neEmsId); ???????mape.put("shelfEmsId", shelfEmsId); ???????mape.put("slotEmsId", slotEmsId); ???????mape.put("cardEmsId", cardEmsId); ???????mape.put("portEmsId", portEmsId); ???????mape.put("sysAndeqp", eqpLists); ???????mape.put("isConf", isConf); ???????//新加条件20180628 ???????mape.put("isDamage", json.optString("isDamage")); ???????mape.put("techTypeName", json.optString("techTypeName")); ???????mape.put("sysName", json.optString("sysName")); ???????mape.put("neTypeName", json.optString("neTypeName")); ???????mape.put("alarmLevelOriginal", json.optString("alarmLevelOriginal")); ???????mape.put("alarmNeTimeStar", json.optString("alarmNeTimeStar")); ???????mape.put("alarmNeTimeEnd", json.optString("alarmNeTimeEnd")); ???????mape.put("ruleDesc", json.optString("ruleDesc")); ???????mape.put("projectName", json.optString("projectName")); ???????PageVo resPageVo = almMonitorService.getNetworkScaleAnalysis(pageVo, mape); ???????Map<String, Object> map = new HashMap<String, Object>(); ???????map.put(SysConstant.ROWS, resPageVo.getVoList()); ???????map.put(SysConstant.TOTAL, resPageVo.getRecordCount()); ???????return map; ???}

项目用的SpringMVC,前端报错经过调试为此方法没有返回值,由于这是别人写的代码并没有try catch(这里表示气愤!!!),经过一点一点debug发现getString()方法无缘无故抛异常了,问了下度娘发现这个方法有雷:当JSONObject中不存在某key的时候就抛异常,而optString()不会,前端写的是自定义条件查询,JSONObject中的key并不是固定不变的,所以这里改为用optString()方法,mybatis配置的sql中有判断,不会影响查询。

关于JSONObject取值方法getString()与optString()

原文地址:https://www.cnblogs.com/vingewu/p/9300366.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved