jsonObject.getString()与jsonObject.optString()
来源:互联网 发布:linux run parts 编辑:程序博客网 时间:2024/04/28 01:18
常见使用原生的解析json方法:
JSONObject jsonObject = new JSONObject(); String str1 = jsonObject.optString("6不6"); String str2 = jsonObject.optString("6不6","默认6"); try { String str3 = jsonObject.getString("666"); } catch (JSONException e) { e.printStackTrace(); }
一:optString与getString的区别:
optString会在得不到你想要的值时候返回空字符串“ ”或指定的默认值,而getString会抛出异常。
optString可以解决服务器字段缺少或者没有该字段而导致的异常以至于程序崩溃。
推荐使用optString,可避免接口字段的缺失、value的数据类型转换等异常。
二:getString()可获取任意类型的数据?
先看JSONObject的源码如下:
JSONObject类部分源码:
/** * Returns the value mapped by {@code name} if it exists, coercing it if * necessary, or throws if no such mapping exists. * * @throws JSONException if no such mapping exists. */ public String getString(String name) throws JSONException { Object object = get(name); String result = JSON.toString(object);//任何类型强转为string if (result == null) { throw JSON.typeMismatch(name, object, "String");//为空抛出解析 } return result; } /** * Returns the value mapped by {@code name} if it exists, coercing it if * necessary, or the empty string if no such mapping exists. */ public String optString(String name) { return optString(name, ""); } /** * Returns the value mapped by {@code name} if it exists, coercing it if * necessary, or {@code fallback} if no such mapping exists. */ public String optString(String name, String fallback) { Object object = opt(name); String result = JSON.toString(object); return result != null ? result : fallback;//不为空取结果,为空取指定值 }
可以看到getString、optString任意类型的value在return之前都会被强转为string类型,
这也就是为什么一直用getString来获取字段时从没出现过数据类型异常的原因。
getString只有在没有该字段或结果为null的时候才会抛出异常。类型不会导致异常。
参考:jsonObject.getString()解析任意字段均可强转为string
阅读全文
0 0
- jsonObject.getString()与jsonObject.optString()
- JSONObject optString与getString
- JSONObject optString与getString
- JSONObject optString与getString区别
- JSONobject.getString()和JSONobject.optString()
- jsonObject.getString() 和jsonObject.optString()区别
- JSONObject的getString()和optString()的区别
- jsonObject.getString()解析任意字段均可强转为string 及与jsonObject.optString()的区别
- JsonObject的optString()和getString()的区别
- JSONObject中optString和getString等的区别
- JsonObject
- jsonobject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- JSONObject
- mac上创建unity项目在移动硬盘,删除文件会报unity attempt to write a readonly database
- Android8.0运行时权限策略变化和适配方案
- SCUT Training 20170913 Problem E
- POJ 1226 后缀数组 或 KMP 或 暴力
- Gradle's dependency cache may be corrupt
- jsonObject.getString()与jsonObject.optString()
- Cannot change version of project facet Dynamic Web Module to 2.5. 解决方案
- Python的可变类型与不可变类型
- hdu2473 Junk-Mail Filter(删点并查集)
- 绿盟网站安全防护服务(vWAF)
- C++中各种输出格式 如fixed、precision()、showpoint等
- NAT 详解
- JAVA初学输入输出
- poi3.16读取xlsx excel2007+的官方例子