![](/img/trans.png)
[英]Enable Jackson to not output the class name when serializing (using Spring MVC)
[英]Why is Jackson using the wrong element name when serializing?
我有一個 Object,我希望 Jackson 像這樣序列化......
<AccountsResponse>
<accounts>
<account/>
<account>
<userId>user</userId>
...
</account>
</accounts>
</AccountsResponse>
為了嘗試這個,我創建了以下 class...
@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 組合。 我究竟做錯了什么?
我會更改 AccountsResponse 中帳戶列表上的注釋:
public class AccountsResponse extends Payload{
@JacksonXmlElementWrapper(localName = "accounts")
@JacksonXmlProperty(localName = "account")
private List<Account> accounts = Lists.newArrayList();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.