先扯两句

写代码吗,大多数情况下还是追求个准确性,可小老儿我却总想着玩的邪的(总不能说是与后台约定好了接口文档,结果他们没按格式传吧,会挨揍的)。怎么判断boolean的都是false,抓一下接口

[图片上传失败...(image-db85ff-1573309702095)]

经过我们友善的沟通,以及付出了两根排骨的代价后,终于成功让后台改了接口,不过还是有所收获的,那就是知道了Gson将String转换为boolean时是不会报错的,特此记录一下。

下面给大家展示个神器,叫附录——目录,好了,闲言少叙,下面进入正题。

正文

@Test

public void jsonTest() {

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("aBoolean", true);

jsonObject.put("string", "hasController");

MyChange change = new Gson().fromJson(jsonObject.toString(), MyChange.class);

System.out.println("转换成功 aBoolean = " + change.aBoolean + " ******* string = " + change.string);

} catch (JSONException e) {

e.printStackTrace();

}

}

public class MyChange {

boolean aBoolean;

boolean string = true;

}

可以看到我们用于接收的对象为MyChange,其中的参数 string赋予默认值true,但是在创建的JSONObject 对象中,传入的string,确实“hasController”,一个纯种的字符串。通过Gson转换后,并没有想象中的报出JSONException,反而能够正常输出结果:

结果

有了这个尝试,是不是可以多玩点好玩的呢?

@Test

public void jsonTest() {

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("aBoolean", true);

jsonObject.put("string", "hasController");

jsonObject.put("int0", 0);

MyChange change = new Gson().fromJson(jsonObject.toString(), MyChange.class);

System.out.println("转换成功 \n****************************\naBoolean = " + change.aBoolean

+ " \nstring = " + change.string

+ " \nint0 = " + change.int0

+ "\n****************************");

} catch (JSONException e) {

e.printStackTrace();

}

}

public class MyChange {

boolean aBoolean;

boolean string = true;

boolean int0 = true;

}

可惜很遗憾,这次Gson竟然失败了~~~

失败

文字翻译过来就是老子想要bean,你却给老子个NUMBER(别问我为什么用“老子”,没看人家已经大写了吗),之后又若若的试了一下long,得到的还是相同的结果,一片血红啊!

但是,这就想吓退小老儿我吗?那是不可能的,别的不行,但是作死的道路上,必须有我的大脚印,于是就有了这段代码:

@Test

public void jsonTest() {

JSONObject jsonObject = new JSONObject();

try {

jsonObject.put("aBoolean", true);

jsonObject.put("string", "hasController");

jsonObject.put("param", new Param());

MyChange change = new Gson().fromJson(jsonObject.toString(), MyChange.class);

System.out.println("转换成功 \n****************************\naBoolean = " + change.aBoolean

+ " \nstring = " + change.string

+ " \nparam = " + change.param

+ "\n****************************");

} catch (JSONException e) {

e.printStackTrace();

}

}

public class MyChange {

boolean aBoolean;

boolean string = true;

boolean param = true;

}

private class Param {

}

直接上最负责的java对象试试会是什么结果。

成功了

结论

经测试,除数值的基本类型,其他的类型转换为boolean不会报错,但是都会被转换为false。

PS:如果熟悉Android Junit的朋友可能已经看出来了,这里使用的代码单元测试工具正式Junit中的java test工具,但是如果直接复制代码在自己的Junit中跑很可能会看到如下错误:

在这里插入图片描述

解决这个问题可以查看:Android 知识点——Method put in org.json.JSONObject not mocked

鸣谢:图片提供网站沙沙野

android bool转字符串,Android 知识点——当json传入字符串,使用Boolean接收时,GSON会将其转换为false...相关推荐

  1. C语言编程>第十六周 ⑧ S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中

    例题:S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度.请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度. 例如,s=&qu ...

  2. Java json拼接字符串_Java中拼接json格式字符串

    如果需要表示的是name-value格式的, 在Java文件中的代码如下: @Override protected void doPost(HttpServletRequest req, HttpSe ...

  3. C语言编程>第十六周 ⑦ s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。

    例题:s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回.每个单词之间都由空格隔开,并且字符串s开始 ...

  4. android jackson 解析json字符串,android:json解析的两个工具:Gson和Jackson的使用小样例...

    1.简单介绍 json是android与server通信过程中经常使用的数据格式,比如.例如以下是一个json格式的字符串: {"address":"Nanjing&qu ...

  5. 【Android开发】计算机网络基础知识点,如何完成网络请求过程?

    (一)计算机网络基础知识:从一次完整的网络请求过程分析 (1)域名解析 1.1)域名与ip地址 (1)ip地址:ip地址是一个32位(4字节)的二进制数(IPV4),常见格式为:192.168.1.1 ...

  6. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  7. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

  8. android bool定义,android-R.bool

    R.bool R.bool () Bool型资源: 定义布尔值的XML资源. Bool型资源 在XML中定义布尔值. 注意:布尔值是一种简单的资源,使用name属性提供的值来引用这个资源.如,可以把布 ...

  9. Android中怎获取json,Android应用中如何解析获取的json数据

    Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...

  10. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组...

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

最新文章

  1. VC++在对话框中加入属性页
  2. linux命令行 正则,在Linux命令行中使用正则表达式
  3. 5G 信令流程 — ULCL 插入流程
  4. 华为高性能服务器刀箱,云平台服务器刀箱
  5. ASP.NET MVC 使用Log4Net在不同目录中记录不同类型的日志
  6. 向量除法能用计算机吗,为什么向量没有除法
  7. Sleutel:密码治理器
  8. linux连接数问题
  9. android矩阵计算器
  10. 太阳系混的最惨行星:被“降级”至今未归队
  11. 常用网站有哪些,最常用的网站
  12. jt808终端鉴权_GitHub - SmallChi/JT808: JT808协议、GB808协议、道路运输车辆卫星定位系统-北斗兼容车载终端通讯协议(支持2013、2019版本)...
  13. ADC和DAC的DNL和INL
  14. 金三银四跳槽季,java面试突击(100题)进大厂就这么简单
  15. 非对称加密之公钥密码体系 【五】
  16. pgpool读写分离,配置设置及调研
  17. [USACO1.3]虫洞wormhole
  18. yolov5笔记(2)——训练自己的数据模型(随6.0更新)
  19. 这是一份价值上千的python数据分析实战
  20. 区位码、国标码、机内码、GBK

热门文章

  1. 4 数据操作+数据预处理
  2. xadmin可能是帮助我完成django网站的一大助力
  3. apache基本配置
  4. 第二次项目冲刺(Beta阶段)--第五天
  5. SecureCRT 绝佳配色方案
  6. 【笔记】《编写高质量代码:改善c#程序的157个建议》-第1章 基本语言要素(SamWang)...
  7. 可实现的python拟牛顿法的DFP算法
  8. 29-3 union的使用
  9. 视频目标跟踪算法Mean Shift和Particle Filter
  10. VS2012中WebAPI项目中的IHttpActionResult不识别的问题----解决办法