GSON JsonObject «Неподдерживаемая исключительная ситуация операции: нуль» getAsString - PullRequest
34 голосов
/ 17 февраля 2012

Запуск игры! приложение с 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

Есть идеи, почему это не работает на всех методах? Благодаря.

Ответы [ 3 ]

48 голосов
/ 17 февраля 2012

Может быть, ваш JsonElement является JsonNull

Что вы можете сделать, это сначала проверить, что это не так, используя json.isJsonNull

В противном случае, попробуйте получить егоСтроковое представление с json.toString

43 голосов
/ 07 августа 2013

У меня была похожая проблема, и мне пришлось изменить jsonObject.getAsString () на jsonObject.toString ();

9 голосов
/ 04 января 2015

В моем случае мне просто нужно было получить элемент в виде пустой строки, если он нулевой, поэтому я написал такую ​​функцию:

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

Поэтому вместо

val geocoder = json.getAsString

Вы можете просто использовать это

val geocoder = getNullAsEmptyString(json);

Возвращает "", если элемент нулевой, и фактическую строку, если это не

...