web-dev-qa-db-ja.com

GSON JsonObject "サポートされていない操作の例外:null" getAsString

プレイを実行します! Scalaを使用したアプリ。応答がJSON文字列であると予想される要求を実行しています。デバッガーをチェックすると、JsonElementはすべての情報が期待どおりにOKを返します。ただし、問題は実際にそのJsonElementでメソッドを実行しようとするときです。

val json = WS.url("http://maps.googleapis.com/maps/api/geocode/json?callback=?&sensor=true&address=%s", startAddress+","+startCity+","+startProvince).get.getJson
    val geocoder = json.getAsString

返される唯一のエラーはUnsupported Operation Exception: nullgetAsStringgetAsJsonObjectgetAsJsonPrimitiveでこれを試しました

すべての方法で失敗する理由はありますか?ありがとう。

36
crockpotveggies

たぶんあなたのJsonElementJsonNullです

あなたができることは、最初にjson.isJsonNullを使用していないことを確認することです

それ以外の場合は、json.toStringを使用して文字列表現を取得してください

50
andy petrella

同様の問題があり、jsonObject.getAsString()をjsonObject.toString()に変更する必要がありました。

43
lleclerc

私の場合、要素がnullの場合は空の文字列として要素を取得する必要があったため、次のような関数を作成しました。

private String getNullAsEmptyString(JsonElement jsonElement) {
        return jsonElement.isJsonNull() ? "" : jsonElement.getAsString();
    }

代わりに

val geocoder = json.getAsString

あなたはこれを使うことができます

val geocoder = getNullAsEmptyString(json);

要素がnullの場合は「」を返し、そうでない場合は実際の文字列を返します

9
Henry