#java #spring #jackson #objectmapper #fasterxml
Вопрос:
У меня есть строка JSON, которая выглядит так:
String jsonString = "{"ID_BUY":1234567}";
И у меня есть POJO:
@Data
@NoArgsConstructor
@SuperBuilder
@JsonInclude(Include,NON_EMPTY)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Order() {
@JsonProperty("ID_BUY")
private String identityBuy;
}
Я использую ObjectMapper:
ObjectMapper mapper = new ObjectMapper()
.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.configure(MapperFeature.USE_ANNOTATION, true);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()));
Когда я выступаю
Order output = mapper.readValue(jsonString, Order.class);
и распечатайте
System.out.println(output.toString());
Я замечаю, что identityBuy имеет значение null.
Есть ли способ заставить картографа принять к сведению аннотацию @JsonProperty?
Может ли кто-нибудь указать мне правильное направление?
Комментарии:
1. Я скопировал ваш код, и он сработал, ему нужно было удалить строку:
mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()));
. Ты можешь попробовать?
Ответ №1:
Для меня это прекрасно работало.
Test.java
import com.fasterxml.jackson.databind.ObjectMapper;
import com.test.check.Order;
public abstract class Test {
public static void main(String[] args) throws Exception {
ObjectMapper map = new ObjectMapper();
String op = "{"ID_BUY":1234567}";
Order orderObj = map.readValue(op, Order.class);
System.out.println("printing output-->" orderObj);
System.out.println("printing output-->" orderObj.toString());
}
}
Order.java
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Setter
@Getter
@Data
public class Order {
@JsonProperty("ID_BUY")
private String arun;
}
Выход:
printing output-->Order(arun=1234567)
printing output-->Order(arun=1234567)