powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Десериализация json
3 сообщений из 3, страница 1 из 1
Десериализация json
    #39626346
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть энам:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public enum MyEnum{
    ZZZQ("zzz"), 
    WWWQ("www"); 

    private String name;

    @JsonCreator
    MyEnum(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}



Пытаюсь десериализовать:
Код: java
1.
2.
3.
4.
   
        String name = "zzz";
        ObjectMapper mapper = new ObjectMapper();
        MyEnum myEnum= mapper.readValue(name, MyEnum.class);


Выдает ошибку:
Код: java
1.
com.fasterxml.jackson.core.JsonParseException: Unrecognized token 'zzz': was expecting ('true', 'false' or 'null')


Перепробовала уже кучу вариантов, не работает, только когда так пишу:
String name = "\"zzz\"" - срабатывает!!!
p.s. это тоже пробовала:
//mapper.enable(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
//mapper.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
...
Рейтинг: 0 / 0
Десериализация json
    #39626406
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JulT,

А вопрос в чем? Я jackson прекрасно понимаю и его точку зрения разделяю.
Код: plaintext
zzz
Это не является Json. Так же, как и
Код: plaintext
{"a" : zzz}
Все стандартные парсеры на это будут ругаться. Вам точно это нужно?

Вот ваш работающий вариант как раз правильный - это валидная json-строка (там часть кавычек java, часть - из содержимого строки). Выглядит как значение
Код: plaintext
"zzz"
Это будет приниматься многими парсерами (некоторые требуют массив или объект на верхнем уровне). В составе другого объекта будет валидно всегда.
...
Рейтинг: 0 / 0
Десериализация json
    #39626435
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какая такая магия позволяет превратить zzz хоть с кавычками хоть без в enum ZZZQ?
я понимаю, почему работает такое
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@JsonCreator
    public static MyEnum creator(String name) {
        for (MyEnum myEnum : MyEnum.values()) {
            if (myEnum.name.equals(name))
                return myEnum;
        }
        return null;
    }



но каким чудом должно работать это?
Код: java
1.
2.
3.
4.
@JsonCreator
    MyEnum(String name) {
        this.name = name;
    }
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Десериализация json
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]