【问题标题】:Java: Jackson serializing is creating 2 nodesJava:Jackson 序列化正在创建 2 个节点
【发布时间】:2020-06-23 23:14:28
【问题描述】:

在 REST 查询的客户端,我的 Java 客户端使用 Jackson (om.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.11.0) 进行以下调用:

XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
ByteArrayOutputStream streamTemplate = new ByteArrayOutputStream();
xmlMapper.writeValue(streamTemplate, template);
streamTemplate.flush();

它正在序列化的类有:

@JacksonXmlProperty(localName = "Datasources")
private List<DataSource> datasources;

Datasource 有几个属性,没有一个名为 Datasources。

但是创建的 XML 有:

SqlServer SQL System.Data.SqlClient 数据源=mssql.windward.net;初始目录=Northwind;用户ID=demo;密码=demo

为什么有两个 Datasources 节点?在作为 C# ASP.NET WebApi2 应用程序的服务器端,它没有反序列化 Datasource 部分,我认为这是由于嵌入式 Datasources 节点造成的。

如何避免这种情况?

【问题讨论】:

  • 嗨,有趣的是,也许由于某种原因该列表包含多个元素?或者DataSource 的序列化表示可能出乎意料,而String 的连接可能会更好。

标签: serialization jackson xml-serialization


【解决方案1】:

答案很简单。注释如下:

@JacksonXmlElementWrapper(localName = "Datasources")
@JacksonXmlProperty(localName = "Datasource")
private List<DataSource> datasources;

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2017-12-22
    相关资源
    最近更新 更多