Проверка JSON

Рейтинг: 0Ответов: 1Опубликовано: 24.02.2015

Всем добрый день. Помогите разобраться.
Есть json:

{"length":"6" ,"width":"20" ,"height":"25" ,"count":"30" }

Он у меня проходит нормально и без происшествий (перевариваю его на сервлете как один из параметров запроса). Но если например в ключе "length" - недописать букву или наоборот дописать, - то остальные параметры проходят нормально, а этот со значением 0. То есть тоже всё хорошо, но неверное значение. Почему проходит такой вариант?! Разве

DetailSimply_json detail = json.fromJson(JsonString, DetailSimply_json.class);

Не должен тогда вылетать с Exception-ом каким-то? Или подобные проверки нужно делать ручками?

Ответы

▲ 3

Мой модуль телепатии подсказывает, что для десериализации JSON в объект вы пользуетесь библиотекой Gson, а DetailSimply_json - ваш кастомный класс, поле length которого имеет числовой тип. Воспроизвести вашу ситуацию мне не удалось, следующий код исправно бросает NumberFormatException:

public class App 
{
    public static void main( String[] args )
    {
        String json = "{\"number\": \"X\", \"text\": \"text\"}";
        Gson gson = new GsonBuilder().create();
        Data data = gson.fromJson(json, Data.class);
        System.out.println(data);
    }

    public static class Data {
        int number;
        String text;

        // getters and setters
    }
}

Это наталкивает на мысль о кастомном десериализаторе для числовых значений, который был зарегистрирован при создании экземпляра парсера. Проверьте, откуда вы берёте десериализатор json, и не производится ли там его дополнительная настройка.