java - 如何在解组期间强制 JAXB/Moxy 遵循顺序?
问题描述
我很新,JAXB/Moxy
并试图实施Marshalling and Unmarshalling
。经过大量搜索和阅读文章,我知道我们可以使用proporder
so 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
字段中,因此当我尝试从其中创建时,我得到了以下字段中的所有字段:XML
XML Node and data
Map<String,Object> others
JSON
unmarshaled
others
{
"name" : "",
"others" : {
"name" : "MY",
"google:sub" : "bye"
}
}
为避免这种情况,我想确保 myunmarshaller
遵循顺序并name
首先填充该字段,然后将所有不匹配的字段填充到 my Map<String, Object>
.
请注意:@XmlPath(".")
在此期间对我来说是必需的,marshaling
因为我想跳过others
节点但保留其中的值。所以我无法删除它。
任何帮助或输入将不胜感激。
解决方案
推荐阅读
- python - 如何仅在特定窗口上进行插值?
- c++ - 避免全局变量制作 boost asio 套接字包装器
- c# - 您对 UWP 中的不同日志记录方法有何建议?
- python - Python ThreadPool 映射中的多个数组
- java - 在 Android 中关闭 DialogFragment 之前确认
- javascript - React 每周调度器的数据结构
- azure-web-app-service - Abp.io 角度项目。Swagger 页面加载,但所有调用都返回 500 内部服务器错误
- csv - 通过交互式绘图编辑 csv 文件
- c - 选择系统调用
- reactjs - 主页 navlinks 链接保持活跃反应