Джексон не хранит значения XML в объекте - PullRequest
0 голосов
/ 06 марта 2019

У меня есть 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, а также пользовательский раздел, он будет отображаться нормально.

Почему сопоставитель объектов не может работать с пользовательским разделом?

...