如何检测json值何时为空?例如:{“用户名”:空},{“用户名”:“空”}
第一种情况表示不存在的用户名,第二种情况表示名为"null“的用户。但是,如果您尝试检索这两个值,则会得到字符串"null“
JSONObject json = new JSONObject("{\"hello\":null}");
json.put("bye", JSONObject.NULL);
Log.e("LOG", json.toString());
Log.e("LOG", "hello="+json.getString("hello") + " is null? "
+ (json.getString("hello") == null));
Log.e("LOG", "bye="+json.getString("bye") + " is null? "
+ (json.getString("bye") == null));
日志输出为
{"hello":"null","bye":null}
hello=null is null? false
bye=null is null? false
发布于 2012-05-15 02:15:54
尝试使用json.isNull( "field-name" )
。
参考:http://developer.android.com/reference/org/json/JSONObject.html#isNull%28java.lang.String%29
发布于 2012-05-15 02:16:39
因为如果给定的键存在,JSONObject#getString就会返回值,所以根据定义它不是null。这就是JSONObject.NULL存在的原因:表示一个null JSON值。
json.getString("hello").equals(JSONObject.NULL); // should be false
json.getString("bye").equals(JSONObject.NULL); // should be true
发布于 2013-03-11 16:36:03
对于android,如果不存在这样的映射,它将引发一个JSONException。所以你不能直接调用这个方法。
json.getString("bye")
如果您的数据可以为空(可能不存在密钥),请尝试
json.optString("bye","callback string");
或
json.optString("bye");
而不是。
在您的演示代码中,
JSONObject json = new JSONObject("{\"hello\":null}");
json.getString("hello");
您得到的是字符串" null“not null。
你应该使用
if(json.isNull("hello")) {
helloStr = null;
} else {
helloStr = json.getString("hello");
}
https://stackoverflow.com/questions/10588763
复制相似问题