2012-02-17 3 views
29

Запуск игры! приложение с 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 и я попробовал это на getAsString и getAsJsonObject и getAsJsonPrimitive

Любая идея, почему это терпит неудачу на все методы? Благодарю.

ответ

36

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

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

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

+1

Да, это сделал трюк, не ожидал хорошего ole null. Благодаря! – crockpotveggies

+0

json.isJsonNull work..thanks –

33

I имел аналогичную проблему, и мне пришлось изменить jsonObject.getAsString() на jsonObject.toString();

+1

как-то теперь это работает, вы знаете причину? – bheatcoker

+0

ничего не работало, но это. Спасибо! – NecipAllef

+1

Глядя на github repo, кажется, что метод getAsString() еще не реализован. Он просто бросает неподдерживаемое исключение, несмотря ни на что. https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonElement.java –

7

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

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

Так вместо

val geocoder = json.getAsString 

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

val geocoder = getNullAsEmptyString(json); 

возвращает «», если элемент является недействительным и фактической строкой, если она не

 Смежные вопросы

  • Нет связанных вопросов^_^