У меня есть XML-файл, подобный этому:
"<?xml version ='1.0' encoding='UFT-8'?>"+
"<CLOSE_TRAILER>"+
"<user>" +
"<id>0600580</id>" +
"<trans_id>7</trans_id>" +
"<host_name>Mnull</host_name>"+
"<session_token>79430831Zahyy</session_token>" +
"<time_stamp>1551736026682</time_stamp>" +
"</user>"+
"<trailer_detail>" +
"<org_id>432</org_id>" +
"<trailer_prefix>XTRA</trailer_prefix>" +
"<system_type>SCAN</system_type>" +
"<truck_mail_flag>false</truck_mail_flag>" +
"<trailer_type_code>T</trailer_type_code>" +
"<in_contingency_flag>false</in_contingency_flag>" +
"<detl_code_svc_type>OVN</detl_code_svc_type>" +
"<catg_code_svc_type></catg_code_svc_type>" +
"<seal_number>12345</seal_number>" +
"<user_id>5155035</user_id>" +
"<trailer_number>24813</trailer_number>" +
"</trailer_detail>"+
"<load_handler>" +
"<employee_id>TEST</employee_id>" +
"<trailer_load_seq>71373839</trailer_load_seq>" +
"<action_code></action_code>" +
"</load_handler>"+
"</CLOSE_TRAILER>";
Я хочу отобразить trailer_detail и load_handler , но не user , в этот объект, который я создал для этого xml:
@JsonRootName(value = "CLOSE_TRAILER")
public class CloseTrailerXml {
@JsonUnwrapped
Trailer trailer_detail;
@JsonUnwrapped
LoadHandler load_handler;
}
Класс Trailer, который я отобразил так:
@JsonRootName ( "trailer_detail")
public class Trailer {
private Integer equipmentSeq;
private String createdBy;
private ZonedDateTime createdDt;
private String updatedBy;
private ZonedDateTime updatedDt;
@JsonProperty("trailer_number")
private String trlrNbr;
... другие переменные-члены
В случае модульного теста у меня есть вышеупомянутый xml, сохраненный как строка, и я использую этот код ниже, чтобы отобразить его в объект:
String msgNoNewLineChar = originalScannerMsg.replace("\\n","");
String msgNoCarReturnChar = msgNoNewLineChar.replace("\\r", "");
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setSerializationInclusion(Include.NON_NULL);
CloseTrailerXml closeTrailerXml= xmlMapper.readValue(originalScannerMsg, CloseTrailerXml.class);
closeTrailerXml создан, но все значения равны нулю.
Если я удалю строку кодирования и тег CLOSE_TRAILER, а также пользовательский раздел, он будет отображаться нормально.
Почему сопоставитель объектов не может работать с пользовательским разделом?