2012-02-17 2 views
29

Play!アプリをScalaで私は応答がJSON文字列であると予想されるリクエストを行っています。デバッガをチェックすると、JsonElementはすべての情報を期待通りに返してOKを返します。しかし、問題は、実際にそのJsonElementでメソッドを実行しようとするときです。GSON JsonObject「サポートされていない操作の例外:null」getAsString

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であり、私はgetAsStringgetAsJsonObjectgetAsJsonPrimitive

に、それはすべてのメソッドに失敗している理由の任意のアイデアを、これを試してみましたか?ありがとう。

答えて

36

はたぶんあなたのJsonElementは、あなたが何ができるかJsonNull

であること、それはそうでなければjson.isJsonNull

を使用していないことを最初にチェックすることで、json.toString

+1

それはトリックをした、良いole nullを期待していなかった。ありがとう! – crockpotveggies

+0

json.isJsonNull worked..thanks –

33

でその文字列表現を取得しようとするI同様の問題があり、jsonObject.getAsString()をjsonObject.toString()に変更しなければなりませんでした。

+1

何とか今、それは動作します、あなたはその理由を知っていますか? – bheatcoker

+0

これは何も働かなかったが、これ。どうも! – NecipAllef

+1

githubリポジトリを見ると、getAsString()メソッドはまだ実装されていないようです。それは何に関係なく、サポートされていない例外をスローします。 https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonElement.java –

7

は、私の場合、私はちょうどそれがnullの場合、空の文字列としての要素を取得するために必要なので、私はこのような関数を書いた:

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

ので、代わりの

val geocoder = json.getAsString 

することができますがこれをちょうど使用してください

要素がnullの場合は ""を返し、要素がnullの場合は実際の文字列を返します。

関連する問題