Android填坑系列:Android JSONObject 中对key-value为null的特殊处理
在与服务端通过JSON格式进行交互过程中,不同版本的JSON库在对于key-value为null情况上的处理不同。
Android自带的org.json对key-value都要求不能为null,对于必传的字段需要留意一下,尤其是留意value是否可能出现null的情形。否则导致服务端解析出现问题。
此坑已被踩中,留下小记。下面直接看一下相应位置源码:
1 public class JSONObject { 2 3 ...... 4 5 /** 6 * Maps {@code name} to {@code value}, clobbering any existing name/value 7 * mapping with the same name. If the value is {@code null}, any existing 8 * mapping for {@code name} is removed. 9 * 10 * @param value a {@link JSONObject}, {@link JSONArray}, String, Boolean, 11 * Integer, Long, Double, {@link #NULL}, or {@code null}. May not be 12 * {@link Double#isNaN() NaNs} or {@link Double#isInfinite() 13 * infinities}. 14 * @return this object. 15 */ 16 public JSONObject put(String name, Object value) throws JSONException { 17 if (value == null) { 18 nameValuePairs.remove(name); 19 return this; 20 } 21 if (value instanceof Number) { 22 // deviate from the original by checking all Numbers, not just floats & doubles 23 JSON.checkDouble(((Number) value).doubleValue()); 24 } 25 nameValuePairs.put(checkName(name), value); 26 return this; 27 } 28 29 30 String checkName(String name) throws JSONException { 31 if (name == null) { 32 throw new JSONException("Names must be non-null"); 33 } 34 return name; 35 } 36 37 38 ...... 39 40 }
转载于:https://www.cnblogs.com/lwbqqyumidi/p/5491074.html
Android填坑系列:Android JSONObject 中对key-value为null的特殊处理相关推荐
- android小米定位,Android填坑系列:在小米系列等机型上放开定位权限后的定位请求弹框示例...
背景 近期因实际项目需要,在特定操作下触发定位请求,取到用户位置及附近位置. 问题: 经初步选型,最终决定接入百度定位,按照百度定位SDK Android文档,接入过程相对顺利. 但随后发现,在小米系 ...
- android 多个catch,【Android开发坑系列】之try-catch
try { mViewPager.postDelayed(new Runnable() { @Override public void run() { getCurrentPage().render( ...
- MySQL填坑系列--Linux平台下MySQL区分大小写问题
问题引入 大家好,我是软件大盗(道),下面开始我们的<MySQL填坑系列>. 笔者最近又在MySQL的边缘试探,然后,试探着,试探着就报错了. 情景还原 书接上文,系统连接数据库时报错:找 ...
- Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑
RecyclerView中EditText和ImageView的ViewHolder复用坑 RecyclerView作为ListView的升级版,目前来讲讲开发过程遇到的坑. RecyclerView ...
- 【微访谈】挖坑的热情似火,填坑的想方设法——对话中讯网联•孙浩
小e的话: eSDK微访谈终于在万众期待下上线啦!在这里,你可以倾听IT人分享经验.职场心得,在这里,你也可以了解华为更丰富的产品.eSDK更广泛的应用:在我们的访谈中,"加班". ...
- com.haodf.android,有坑!Android新版QQ获取packageInfo引发异常崩溃
起因 最近从错误日志中检查到一个异常崩溃: java.lang.RuntimeException: Package manager has died at android.app.ActivityTh ...
- 【Android开发坑系列】之PopupWindow
PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复.其中mPopPm就是PopupWindow实例. java.lang.NullPointerExce ...
- Android填坑记录
1.接入firebase问题: 2020-01-02 16:46:53.878 2711-2853/? E/FirebaseInstanceId: Google Play services missi ...
- 【Android开发坑系列】之事件
总结一下: 1.Touch事件分发中只有两个主角: ViewGroup和View. ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouc ...
最新文章
- 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
- 这是一份非常全面的开源数据集!
- Oracle的括号转义字符,SQL中通配符、转义符与括号的使用
- 终于有人把中医“数字化”了 | 极客视频
- 大数问题(一个特别大的数需要用数组或字符串来表示)
- 机房服务器虚拟化,服务器虚拟化在数据中心机房中的应用
- sklearn自学指南(part28)--双向聚类
- DCASE2013挑战赛介绍
- 联通定时休眠5G基站 戳破皇帝的新衣
- Linux下进程隐藏的常见手法及侦测手段
- 全国计算机等级考试报名入口黑龙江,黑龙江2021年3月计算机等级考试报名入口...
- Linux管理员权限失败su Authentication failure
- 冷美人为什么“冷”?
- java设计模型 解析工厂模式、proxy-agent模式、templete模式
- 零基础学计算机编程教学视频教程,IT编程入门教程视频免费资源分享
- S5P4418裸机之SDIO程序
- python tokenize怎么用_tokenize -- 对 Python 代码使用的标记解析器 — Python 3.7.9 文档...
- Python 跨文件调用函数 + 在一个文件中执行另一个文件
- 使用JS-SDK自定义微信分享效果
- BAT之变:瘦死的骆驼比马大