首页 > 解决方案 > 如何在解组期间强制 JAXB/Moxy 遵循顺序?

问题描述

我很新,JAXB/Moxy并试图实施Marshalling and Unmarshalling。经过大量搜索和阅读文章,我知道我们可以使用proporderso marshaling 遵循顺序但我如何确保unmarshalling遵循顺序?

以下是Customer我拥有的 POJO:

@XmlRootElement(name = "Customer")
@XmlType(name = "Customer", propOrder = {"name", "others"})
@XmlAccessorType(XmlAccessType.FIELD)
@Getter
@Setter
@NoArgsConstructor
public class Customer {

  private String name;

  @XmlPath(".")
  @XmlJavaTypeAdapter(TestAdapter.class)
  @JsonSerialize(using = CustomExtensionsSerializer.class)
  private Map<String, Object> others = new HashMap<>();

  @JsonAnySetter
  public void setOthers(String key, Object value) {
    others.put(key, value);
  }

  public Customer xmlSupport() {
    return this;
  }
}

虽然文件全部自动填充到unmarshalling字段中,因此当我尝试从其中创建时,我得到了以下字段中的所有字段:XMLXML Node and dataMap<String,Object> othersJSONunmarshaledothers

{
  "name" : "",
  "others" : {
    "name" : "MY",
    "google:sub" : "bye"
  }
}

为避免这种情况,我想确保 myunmarshaller遵循顺序并name首先填充该字段,然后将所有不匹配的字段填充到 my Map<String, Object>.

请注意:@XmlPath(".")在此期间对我来说是必需的,marshaling因为我想跳过others节点但保留其中的值。所以我无法删除它。

任何帮助或输入将不胜感激。

标签: javajaxbeclipselinkunmarshallingmoxy

解决方案


推荐阅读