Jackson - @jsontypeinfo собственность отображается как NULL?JAVA

Программисты JAVA общаются здесь
Anonymous
Jackson - @jsontypeinfo собственность отображается как NULL?

Сообщение Anonymous »

Скажи, что у меня есть следующий json: < /p>

Код: Выделить всё

{
"id":"decaa828741611e58bcffeff819cdc9f",
"statement":"question statement",
"exercise_type":"QUESTION"
}
Тогда, на основе поля gened_type , я хочу создать экземпляры различных объектов (подклассы CreamiserSestonto ). Для этого я попытался создать этот микс в: < /p>

Код: Выделить всё

@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "exercise_type")
@JsonSubTypes({
@Type(value = ExerciseChoiceResponseDTO.class, name = "CHOICE"),
@Type(value = ExerciseQuestionResponseDTO.class, name = "QUESTION")})
public abstract class ExerciseMixIn
{}

public abstract class ExerciseResponseDTO {

private String id;
private String statement;
@JsonProperty(value = "exercise_type") private String exerciseType;

// Getters and setters
}

public class ExerciseQuestionResponseDTO
extends ExerciseResponseDTO {}

public class ExerciseChoiceResponseDTO
extends ExerciseResponseDTO {}
, а затем Mapper objectmapper следующим образом

Код: Выделить всё

ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(ExerciseResponseDTO.class, ExerciseMixIn.class);
< /code>
Но по какой -то причине этот тест не проходит: < /p>
ExerciseResponseDTO exercise = mapper.readValue(serviceResponse, ExerciseResponseDTO.class)
Assert.assertTrue(exercise.getClass() == ExerciseQuestionResponseDTO.class);    // OK
Assert.assertEquals("decaa828741611e58bcffeff819cdc9f" exercise.getId());       // OK
Assert.assertEquals("question statement", exercise.getStatement());             // OK
Assert.assertEquals("QUESTION", exercise.getExerciseType());                    // FAIL. Expected: "QUESTION", actual: null
Похоже, что существует проблема, в которой конкретно есть атрибут geigin_type , который по какой -то причине не отображается, поскольку все остальные поля отображаются просто в порядке. Есть идеи, что это может вызвать?

Подробнее здесь: https://stackoverflow.com/questions/336 ... ed-as-null

Вернуться в «JAVA»