web-dev-qa-db-fra.com

GSON JsonObject "Exception d'opération non prise en charge: null" getAsString

Lancer une pièce! application avec Scala. Je fais une demande où la réponse devrait être une chaîne JSON. Lors de la vérification du débogueur, le JsonElement renvoie OK avec toutes les informations comme prévu. Cependant, le problème est lorsque j'essaie d'exécuter des méthodes sur ce 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

La seule erreur que je reçois est Unsupported Operation Exception: null et j'ai essayé ceci sur getAsString et getAsJsonObject et getAsJsonPrimitive

Une idée pourquoi cela échoue sur toutes les méthodes? Merci.

36
crockpotveggies

Peut-être que votre JsonElement est un JsonNull

Ce que vous pourriez faire, c'est d'abord vérifier que ce n'est pas le cas en utilisant json.isJsonNull

Sinon, essayez d'obtenir sa représentation String avec json.toString

50
andy petrella

J'ai eu un problème similaire et j'ai dû changer jsonObject.getAsString () en jsonObject.toString ();

43
lleclerc

Dans mon cas, j'avais juste besoin d'obtenir l'élément sous forme de chaîne vide s'il est nul, j'ai donc écrit une fonction comme celle-ci:

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

Donc au lieu de

val geocoder = json.getAsString

Vous pouvez simplement utiliser ceci

val geocoder = getNullAsEmptyString(json);

Il retourne "" si l'élément est nul et la chaîne réelle s'il ne l'est pas

9
Henry