Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / JAX-RS и чувствительность к регистру при десериализации JSON / 8 сообщений из 8, страница 1 из 1
03.12.2021, 16:52
    #40117096
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
Метод rest-сервиса принимает json вида
Код: javascript
1.
2.
3.
4.
{
"code": "123",
"type": 0
}



При вызове метода поле "code" всегда передавалось, как "Code", и нормально десериализовалось.
Сейчас буква в верхнем регистре вызывает эксепшен
авторorg.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "Code"


Что могло поменяться и главное, как опять сделать десериализацию нечувствительной к регистру?
...
Рейтинг: 0 / 0
05.12.2021, 21:27
    #40117570
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
Это ошибка библиотечки Jaxon.

Найди эту сущность где есть поля code, type и посмотри какие есть на ней Jaxon
аннотации. Возможно где-то надо поставить

Код: java
1.
@JsonProperty("Code")



или игнорировать неизвестные поля @JsonIgnoreProperties(ignoreUnknown=true)
...
Рейтинг: 0 / 0
07.12.2021, 19:19
    #40118249
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
XEugene,

Например, так на классе для jackson 2.12:

Код: java
1.
2.
3.
4.
5.
6.
@JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
class MyObject {
 String Code;
 int type;
...
}



Или:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

...
private static final ObjectMapper OBJECT_MAPPER;

    static {
        OBJECT_MAPPER = new ObjectMapper();
        OBJECT_MAPPER.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);



Что конкретно поменялось у Вас - сложно сказать, но точно смена конфигурации (прямая или путем апдейта версии какой-нибудь либы)
...
Рейтинг: 0 / 0
07.12.2021, 19:25
    #40118252
Большой Синий Кит
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
P.S. Еще можно (что некрасиво):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class MyObject{

...

private String Code;

@JsonSetter("code")
public void setCode(String code) {
    this. Code = Code;
}

}
...
Рейтинг: 0 / 0
09.12.2021, 11:48
    #40118582
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
Большой Синий Кит

Что конкретно поменялось у Вас - сложно сказать, но точно смена конфигурации (прямая или путем апдейта версии какой-нибудь либы)


У нас фронт обращается к сервису через мидл и перестало работать после рефакторинга мидла.
Решили эту проблему, включив на мидле принудительный camelcase. У них есть такая опция и по всей видимости она раньше и была включена.
...
Рейтинг: 0 / 0
09.12.2021, 11:56
    #40118584
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
mayton
или игнорировать неизвестные поля @JsonIgnoreProperties(ignoreUnknown=true)


Вот сейчас пытаюсь включить игнорирование неизвестных полей. Потому что, как выяснилось, вместе с полями, которые принимаются сервисом, приходят ещё какие-то другие.


Аннотация @JsonIgnoreProperties(ignoreUnknown=true) у меня не заработала.

На неизвестные поля получаю по-прежнему org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field

Я её использую на уровне класса, естественно.
Библиотеки пробовал такие:
jackson-annotations 2.10.1
jackson-databind 2.12.5
...
Рейтинг: 0 / 0
09.12.2021, 13:00
    #40118598
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
XEugene,

Код: java
1.
@JsonIgnoreProperties


ставится не на филдах а на классе. Вообще покажи сорцы.
...
Рейтинг: 0 / 0
09.12.2021, 13:19
    #40118602
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JAX-RS и чувствительность к регистру при десериализации JSON
mayton
XEugene,

Код: java
1.
@JsonIgnoreProperties


ставится не на филдах а на классе. Вообще покажи сорцы.



Заработало с такими зависимостями:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>1.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.2</version>
        </dependency>




Именно на классе, что мне и нужно.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JAX-RS и чувствительность к регистру при десериализации JSON / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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