java - 在 Java/Android 中测试空 JSON 对象

标签 java android json null

我得到这个 LogCat:

06-22 15:30:53.731: E/AndroidRuntime(2389): java.lang.NumberFormatException: Invalid float: "null"
06-22 15:30:53.731: E/AndroidRuntime(2389):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-22 15:30:53.731: E/AndroidRuntime(2389):     at java.lang.StringToReal.parseFloat(StringToReal.java:310)
06-22 15:30:53.731: E/AndroidRuntime(2389):     at java.lang.Float.parseFloat(Float.java:300)
06-22 15:30:53.731: E/AndroidRuntime(2389):     at java.lang.Float.valueOf(Float.java:337)

代码如下:

try
{
    jObject = new JSONObject(result);
    starAvg = jObject.getString("AverageRating"); 
}
ratingsBar = (RatingBar) findViewById(R.id.theRatingBar);
ratingsBar.setRating(Float.valueOf(starAvg));

这里是上下文:

在 PHP 中,我对 MySQL 表中的列中的总数进行平均。当有任何行时,它会发回其中数据的平均值并对其进行编码,然后 Java 将其作为 JSON 对象获取。但有时,有些情况下一个表可能有 0 行,所以我得到这个 JSON 对象:

 {"AverageRating":null}

然后我的应用程序崩溃,LogCat 如上所示。

String 似乎并不关心它是否拾取了一个 Null JSON 对象,但是当我执行 Float.valueOf(theString) 时应用程序崩溃了。

另一个旁注,我试过这样测试:

if String is Null, Float = 0 
if String is not null, Float.valueOF(String)

但它似乎从未将 String 读取为 null。在这种情况下它实际上不是 null 吗?

最佳答案

使用 JsonObject 的以下方法检查任何键的值是否为 null

public boolean isNull(java.lang.String key)

此方法用于针对任何键检查 Null 或如果该键没有值。

使用下面的 fragment

if (jsonObject.isNull("AverageRating")) {
    Toast.makeText(this, "Cannot Convert!!", Toast.LENGTH_LONG).show();
    //float set to 0
} else {
    Float.valueOf(jsonObject.getString("AverageRating"));
}

关于java - 在 Java/Android 中测试空 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165192/

相关文章:

java - 如何在单击按钮时关闭小程序

java - 拆分方法java

android - 如何正确关闭 DialogFragment?

json - 将 json 解析为 Mongoose 架构

java - 包含在 1 之间的 0 的任何非空连续序列的正则表达式

java - Maven:无法在项目上执行目标。 Hibernate 5 从 repo.spring.io 消失了?

java - 某些语言环境在 TTS 中不可用——包括西类牙语

android - 您如何在模拟器或Android测试之外构建和测试Android应用程序的数据层?

java - 如何使用 Gson 序列化 Optional<T> 类?

python - 如何在添加另一个字段时从数据框中传递嵌套的 JSON?