私はこの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
上記のようになります。
Null JSONオブジェクトを取得するかどうかは気にString
しないようですが、取得するとアプリがクラッシュしますFloat.valueOf(theString)
。
別の補足として、私はこの方法でテストしようとしました:
if String is Null, Float = 0
if String is not null, Float.valueOF(String)
しかし、文字列をnullとして読み取ることはありません。この場合、実際にはそうではありませんnull
か?