プレイを実行します! 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: null
とgetAsString
とgetAsJsonObject
とgetAsJsonPrimitive
でこれを試しました
すべての方法で失敗する理由はありますか?ありがとう。
たぶんあなたのJsonElement
はJsonNull
です
あなたができることは、最初にjson.isJsonNull
を使用していないことを確認することです
それ以外の場合は、json.toString
を使用して文字列表現を取得してください
同様の問題があり、jsonObject.getAsString()をjsonObject.toString()に変更する必要がありました。
私の場合、要素がnullの場合は空の文字列として要素を取得する必要があったため、次のような関数を作成しました。
private String getNullAsEmptyString(JsonElement jsonElement) {
return jsonElement.isJsonNull() ? "" : jsonElement.getAsString();
}
代わりに
val geocoder = json.getAsString
あなたはこれを使うことができます
val geocoder = getNullAsEmptyString(json);
要素がnullの場合は「」を返し、そうでない場合は実際の文字列を返します