gpt4 book ai didi

java - 为 jsonObj.getString 返回 null ("key");

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:36:43 26 4
gpt4 key购买 nike

 JSONObject jsonObj  = {"a":"1","b":null}
  1. 案例 1:jsonObj.getString("a") 返回“1”;

  2. 案例 2:jsonObj.getString("b") 不返回任何内容;

  3. 案例 3:jsonObj.getString("c") 抛出错误;

如何使案例 2 和案例 3 返回 null 而不是 "null"

最佳答案

您可以使用 get() 代替 getString()。这样就会返回一个 Object 并且 JSONObject 会猜测正确的类型。甚至适用于 null。请注意,Java nullorg.json.JSONObject$Null 之间存在差异。

案例 3 不返回“无”,它抛出一个异常。因此,您必须检查 key 是否存在 (has(key)) 并返回 null。

public static Object tryToGet(JSONObject jsonObj, String key) {
if (jsonObj.has(key))
return jsonObj.opt(key);
return null;
}

编辑

正如您评论的那样,您只需要一个 Stringnull,这会导致 optString(key, default) 进行获取。查看修改后的代码:

package test;

import org.json.JSONObject;

public class Test {

public static void main(String[] args) {
// Does not work
// JSONObject jsonObj = {"a":"1","b":null};

JSONObject jsonObj = new JSONObject("{\"a\":\"1\",\"b\":null,\"d\":1}");

printValueAndType(getOrNull(jsonObj, "a"));
// >>> 1 -> class java.lang.String

printValueAndType(getOrNull(jsonObj, "b"));
// >>> null -> class org.json.JSONObject$Null

printValueAndType(getOrNull(jsonObj, "d"));
// >>> 1 -> class java.lang.Integer

printValueAndType(getOrNull(jsonObj, "c"));
// >>> null -> null
// throws org.json.JSONException: JSONObject["c"] not found. without a check
}

public static Object getOrNull(JSONObject jsonObj, String key) {
return jsonObj.optString(key, null);
}

public static void printValueAndType(Object obj){
System.out.println(obj + " -> " + ((obj != null) ? obj.getClass() : null));
}
}

关于java - 为 jsonObj.getString 返回 null ("key");,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41778623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com