jsonObject.getString()与jsonObject.optString()

2023-12-23 05:18

本文主要是介绍jsonObject.getString()与jsonObject.optString(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

常见使用原生的解析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);//任何类型强转为stringif (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

这篇关于jsonObject.getString()与jsonObject.optString()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/526844

相关文章

通过Ajax请求后台数据,返回JSONArray(JsonObject),页面(Jquery)以table的形式展示

点击“会商人员情况表”,弹出层,显示一个表格,如下图: 利用Ajax和Jquery和JSONArray和JsonObject来实现: 代码如下: 在hspersons.html中: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>会商人员情况表</title><script type="text/javasc

json 处理得到 json对象 操作JSONObject

``` 页面jsvar attributes = new Array();var attributes = {"YZCMC" : "Joe Smith","SSQY" : "禁养区","FZR" : "lulx","SZZB" : "月山镇"}var parameter = {attributes : JSON.stringify(attributes)};$.ajax({type: 'po

Java导入包com.alibaba.fastjson2.JSONObject

com.alibaba.fastjson2.JSONObject 是阿里巴巴的 fastjson 库中的一个类,用于处理 JSON 数据。 这里提供一些常见的使用示例和可能的问题解决方法。 解决方案和示例代码: 创建 JSONObject 对象: import com.alibaba.fastjson2.JSONObject;JSONObject jsonObject = new JSONO

研究使用FastJson把Java对象转JsonObject的效率问题,以及改进方案。

构造了一个稍微复杂的Java对象对比在不同情况下的转换效率,都是循环20次执行。 项目地址:https://gitee.com/icefire11/test-fast-json 概述: Main方法示例: import com.alibaba.fastjson.JSONObject;public class Test {public static void main(String[] ar

fastJson解析空指针异常与防范VS从Map、JSONObject取不存在键值对时的异常情况

0x01 问题描述 正常情况下fastJson解析失败会抛异常,但解析字符串数据为null、”“、“ ”这些情况下,fastJson返回null对象而不会抛异常,这样在调用对象时就导致了空指针异常的问题。 0x02 解决方案 对此,不亦对其进行了一个简单的封装,在上述情况解析出null对象时直接抛异常。 0x03 代码 import com.alibaba.fastjson.JSON;p

JSONObject:put,accumulate,element的区别

public Object put (Object key, Object value) 将value映射到key下。如果此JSONObject对象之前存在一个value在这个key下,当前的value会替换掉之前的value Associates the specified value with the specified key in this map(optional operatio

JsonObject 简介

JsonObject 类JsonObject 是一个无序的零个或更多的键/值对的集合。JsonObject 就是常说的 json。是一种重要的数据传输对象。其格式为{"key1":value1,"key2",value2....};key 必须是字符串。很像map对不对,一个key,一个value。JSON-lib包是一个beans,collections,maps,java arrays 和XM

Java - IDEA在debug时怎么复制JSONObject或JSONArray的值

问题 调试代码时,想复制一个接口的请求参数,因为是JSONObject类型,不能像其他基本类型一样,直接复制出所有结果。 复制只能复制size = 0出来。 要是一个个key value可太麻烦了... 方法 右键参数  弹出的框中,可以执行代码 我们输入paramJson.toJSONString();,点击Evaluate按钮,将其转换为json字符串。 然

A JSONObject text must begin with '{' at character 1 of 1

JSONObject json = JSONObject.fromObject(str);JSONObject stateJson = (JSONObject) json.get("stateVO");String code = stateJson.getString("code"); 报异常,而结果是返回的json 对象, 这么写就不 报错

JSONObject中optString和getString等的区别

optString会在得不到你想要的值时候返回空字符串”“,而getString会抛出异常。