在Java/Android中测试空JSON对象

The*_*ter 7 java null android json

我得到这个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)
Run Code Online (Sandbox Code Playgroud)

这是代码:

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

以下是上下文:

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

 {"AverageRating":null}
Run Code Online (Sandbox Code Playgroud)

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

String似乎并不关心它是否拿起一个空的JSON对象,但应用程序崩溃时我做的Float.valueOf(theString).

另一方面,我试图用这种方式测试:

if String is Null, Float = 0 
if String is not null, Float.valueOF(String)
Run Code Online (Sandbox Code Playgroud)

但它似乎永远不会将String读为null.null在这种情况下,它真的不是吗?

Vip*_*hah 25

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

public boolean isNull(java.lang.String key)
Run Code Online (Sandbox Code Playgroud)

此方法用于针对任何键检查Null,或者如果没有键的值.

使用下面的代码段

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

  • "Vipul.isGenius(沙阿)?+1:null` (4认同)