【发布时间】:2020-10-07 19:56:01
【问题描述】:
我有一个对象,我希望 Jackson 像这样序列化...
<AccountsResponse>
<accounts>
<account/>
<account>
<userId>user</userId>
...
</account>
</accounts>
</AccountsResponse>
为了尝试这个,我创建了以下类...
@Getter
@Setter
@ToString
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Payload {
@JacksonXmlProperty(localName = "errormessage")
private String errorMessage;
}
@Getter
@Setter
@ToString
public class AccountsResponse extends Payload{
@JsonIgnore
private static Logger LOGGER = LogManager.getLogger(AccountsResponse.class);
@JacksonXmlProperty(localName = "accounts")
private List<Account> accounts = Lists.newArrayList();
public static AccountsResponse mapFromResultSet(ResultSet rs)
throws SQLException
{
AccountsResponse response = new AccountsResponse();
do {
Account acct = Account.mapFromResultSet(rs);
response.getAccounts().add(acct);
} while (rs.next());
return response;
}
public String toXml() throws JsonProcessingException {
ObjectMapper mapper = new XmlMapper();
return mapper.writeValueAsString(this);
}
}
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Account extends ResultSetParser{
...
}
但是当我序列化时,我得到...
<AccountsResponse>
<accounts>
<accounts/>
<accounts>
<userId>user</userId>
...
</accounts>
</accounts>
</AccountsResponse>
如您所见,这里的问题是子标签应该是account,但实际上是accounts。我尝试使用本地名称进行破解,但找不到合适的 VooDoo 组合。我做错了什么?
【问题讨论】:
-
请出示你的
Account班级。