簡體   English   中英

使用Jackson將POJO序列化為xml時,刪除xml包裝器

[英]Remove xml wrapper when serializing POJO to xml using Jackson

我必須帶一個Java對象並將其序列化為xml字符串。 期望xml必須如下所示:

 <close_trailer_results>  
     <detl_code_load_cond_stat>CLSD</detl_code_load_cond_stat>  
     <detl_code_serv_type>GND</detl_code_serv_type>  
     <detl_code_due_sort>PRE</detl_code_due_sort>   
     <due_dt_gmt>2018-12-12 08:00:00</due_dt_gmt>   
     <org_id_next_sort>441</org_id_next_sort>  
 </close_trailer_results>

實際的xml看起來像這樣:

> <close_trailer_results>
>     <LoadCloseTrailerResponseXml> 
>        <detl_code_load_cond_stat>CLSD</detl_code_load_cond_stat> 
>        <detl_code_serv_type>OVN</detl_code_serv_type> 
>        <detl_code_due_sort>MID</detl_code_due_sort>
>        <due_dt_gmt>2019-03-19 07:59:43</due_dt_gmt> 
>        <org_id_next_sort>61</org_id_next_sort>
>     </LoadCloseTrailerResponseXml> </close_trailer_results

java類映射xml元素。 但是我想上課。 我不希望xml文檔中的類名稱。 這是班

@JsonPropertyOrder({"detl_code_load_cond_stat", "detl_code_serv_type", "detl_code_due_sort", "due_dt_gmt", "org_id_next_sort"})
 public class LoadCloseTrailerResponseXml {

        private String detl_code_load_cond_stat;    
        private String detl_code_serv_type; 
        private String detl_code_due_sort;
        private String due_dt_gmt;
        private Integer org_id_next_sort;
      ...just getters and setters
    }

創建xml時,代碼如下:

XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.setSerializationInclusion(Include.NON_NULL);

        LoadCloseTrailerResponseXml responseTrailer = new LoadCloseTrailerResponseXml();
        responseTrailer.setDetl_code_load_cond_stat(trailerResponse.getTrailer().getDetlCodeLoadCondStat());
        responseTrailer.setDetl_code_serv_type(trailerResponse.getTrailer().getDetlCodeServType());
        responseTrailer.setDetl_code_due_sort(trailerResponse.getTrailer().getDetlCodeDueSort());
        responseTrailer.setDue_dt_gmt(trailerResponse.getTrailer().getDueDateGmt());
        responseTrailer.setOrg_id_next_sort(trailerResponse.getTrailer().getOrgIdNextSort());

我無法在類級別添加@JsonUnwrapped注釋。 我嘗試在創建xml之前添加以下代碼:

JacksonXmlModule xmlModule = new JacksonXmlModule();
xmlModule.setDefaultUseWrapper(false);
ObjectMapper xmlMapper = new XmlMapper(xmlModule);

這沒有影響。 類包裝仍然在xml中。 如何在不將類包裝在元素周圍的情況下創建xml字符串?

更新我找到了xmlMapper的配置設置,該設置應該可以工作,但不能:

xmlMapper.configure(SerializationFeature.WRAP_ROOT_VALUE, false);

我在線閱讀了有關從POJO創建xml文件時,Jackson會在xml文件中放置一個根標記的信息,無論您是否設置了一個。 如果未設置,它將是類名。 我的解決方案是創建具有這些根標記的xml字符串,並執行一個字符串函數來刪除根標記。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM