GSON JsonObject «Исключение неподдерживаемой операции: null» getAsString

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

Единственная ошибка, которую я получаю, это Исключение неподдерживаемой операции: null , и я пробовал это на getAsString и getAsJsonObject и getAsJsonPrimitive

Есть идеи, почему он не работает по всем методам? Спасибо.

38
задан crockpotveggies 17 February 2012 в 08:00
поделиться

1 ответ

Класс JsonElement бросит Unsupported Operation Exception для любого getAs<Type> метод, потому что это - абстрактный класс и имеет смысл, что он реализован таким образом.

По некоторым причинам класс JsonObject, не реализует эти getAs<Type> методы, таким образом, любой вызов к одному из этих методов выдаст исключение.

Вызов toString метод на JsonElement объект, может решить Вашу проблему при определенных обстоятельствах, но не, вероятно, что Вы хотите, потому что это возвращает json представление как Строку (например, \"value\") в некоторых случаях.

я узнал, что также JsonPrimitive класс существует, и он действительно реализует эти getAs<Type> методы. Таким образом, вероятно, корректный способ продолжиться является чем-то вроде этого:

    String input = "{\"key1\":\"value1\",\"key2\":\"value2\"}";
    JsonParser parser = new JsonParser();
    JsonElement jsonTree = parser.parse(input);

    if(jsonTree != null && jsonTree.isJsonObject()) {
        JsonObject jsonObject = jsonTree.getAsJsonObject();
        value = jsonObject.get("key1").getAsJsonPrimitive().getAsString()
    }

пз. Я удалил всю nullability часть менеджмента. Если Вы кодируете в Java, Вы, вероятно, хотите управлять этим лучшим способом.

посмотрите исходный код GitHub для [1 111]: https://github.com/google/gson/blob/master/gson/src/main/java/com/google/gson/JsonElement.java#L178

0
ответ дан 27 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: