在与服务端通过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的特殊处理相关推荐

  1. android小米定位,Android填坑系列:在小米系列等机型上放开定位权限后的定位请求弹框示例...

    背景 近期因实际项目需要,在特定操作下触发定位请求,取到用户位置及附近位置. 问题: 经初步选型,最终决定接入百度定位,按照百度定位SDK Android文档,接入过程相对顺利. 但随后发现,在小米系 ...

  2. android 多个catch,【Android开发坑系列】之try-catch

    try { mViewPager.postDelayed(new Runnable() { @Override public void run() { getCurrentPage().render( ...

  3. MySQL填坑系列--Linux平台下MySQL区分大小写问题

    问题引入 大家好,我是软件大盗(道),下面开始我们的<MySQL填坑系列>. 笔者最近又在MySQL的边缘试探,然后,试探着,试探着就报错了. 情景还原 书接上文,系统连接数据库时报错:找 ...

  4. Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

    RecyclerView中EditText和ImageView的ViewHolder复用坑 RecyclerView作为ListView的升级版,目前来讲讲开发过程遇到的坑. RecyclerView ...

  5. 【微访谈】挖坑的热情似火,填坑的想方设法——对话中讯网联•孙浩

    小e的话: eSDK微访谈终于在万众期待下上线啦!在这里,你可以倾听IT人分享经验.职场心得,在这里,你也可以了解华为更丰富的产品.eSDK更广泛的应用:在我们的访谈中,"加班". ...

  6. com.haodf.android,有坑!Android新版QQ获取packageInfo引发异常崩溃

    起因 最近从错误日志中检查到一个异常崩溃: java.lang.RuntimeException: Package manager has died at android.app.ActivityTh ...

  7. 【Android开发坑系列】之PopupWindow

    PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复.其中mPopPm就是PopupWindow实例. java.lang.NullPointerExce ...

  8. Android填坑记录

    1.接入firebase问题: 2020-01-02 16:46:53.878 2711-2853/? E/FirebaseInstanceId: Google Play services missi ...

  9. 【Android开发坑系列】之事件

    总结一下: 1.Touch事件分发中只有两个主角: ViewGroup和View. ViewGroup包含onInterceptTouchEvent.dispatchTouchEvent.onTouc ...

最新文章

  1. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
  2. 这是一份非常全面的开源数据集!
  3. Oracle的括号转义字符,SQL中通配符、转义符与括号的使用
  4. 终于有人把中医“数字化”了 | 极客视频
  5. 大数问题(一个特别大的数需要用数组或字符串来表示)
  6. 机房服务器虚拟化,服务器虚拟化在数据中心机房中的应用
  7. sklearn自学指南(part28)--双向聚类
  8. DCASE2013挑战赛介绍
  9. 联通定时休眠5G基站 戳破皇帝的新衣
  10. Linux下进程隐藏的常见手法及侦测手段
  11. 全国计算机等级考试报名入口黑龙江,黑龙江2021年3月计算机等级考试报名入口...
  12. Linux管理员权限失败su Authentication failure
  13. 冷美人为什么“冷”?
  14. java设计模型 解析工厂模式、proxy-agent模式、templete模式
  15. 零基础学计算机编程教学视频教程,IT编程入门教程视频免费资源分享
  16. S5P4418裸机之SDIO程序
  17. python tokenize怎么用_tokenize -- 对 Python 代码使用的标记解析器 — Python 3.7.9 文档...
  18. Python 跨文件调用函数 + 在一个文件中执行另一个文件
  19. 使用JS-SDK自定义微信分享效果
  20. BAT之变:瘦死的骆驼比马大

热门文章

  1. 【零基础学Java】—throw关键字(四十六)
  2. SQL68 牛客每个人最近的登录日期(三)
  3. 我们早上一般是七点半上班
  4. 摄影爱好者的照片,怎样才能变收入?
  5. 创业者总认为自己能力很强,但能力之上是认知力
  6. 同样是做冻品生意,哪类人更挣Q?
  7. 有些生意很偏门,也有一定门槛,但是效益非常好
  8. RX570 4G显卡怎么样?
  9. 按代码行衡量编程进度就像按重量衡量飞机制造进度一样
  10. Android数据存储——内部存储