0
我有一個類定義如下:通過顛倒@XmlElement重命名的影響解組json?
public class Contact implements Serializable
{
private final static long serialVersionUID = 1L;
@XmlElement(name = "last-name", required = true)
protected String lastName;
@XmlElement(name = "first-name", required = true)
protected String firstName;
@XmlElement(required = true)
protected String id;
@XmlElement(name = "primary-phone")
protected String primaryPhone;
@XmlElement(name = "cellular-phone")
protected String cellularPhone;
}
該類被用於產生被傳輸通過互聯網編組JSON版本。在接收端,我試圖解組JSON,但是由於命名的不同,我遇到了困難,例如,解組庫有一個名爲primaryPhone
的變量,而不是primary-phone
,這是我在接收端的變量。
除了預處理接收到的JSON文本以手動替換primary-phone
與primaryPhone
的實例,還有其他一些更自動化的方法來避免此問題嗎?手動轉換字符串的問題在於明天如果類定義更改,我正在編寫的代碼也需要更新。
這裏展示我目前正在做什麼,我沒有任何人工的字符串轉換的代碼片段:
String contact = "\"last-name\": \"ahmadka\"";
ObjectMapper objMapper = new ObjectMapper();
Contact cObj = objMapper.readValue(contact, Contact.class);
但與上面的代碼,我得到的最後一行例外閱讀本:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "last-name" (class Contact), not marked as ignorable (5 known properties: "lastName", "cellularPhone", "id", "primaryPhone", "firstName", ])
at ...........//rest of the stack
所以你說,如果我添加上面的依賴關係,然後調用'mapper.registerModule(new JaxbAnnotationModule());'在任何解組之前,它應該工作? – Ahmad
是的。它會識別'@ XmlElement'並使用'last-name'來映射JSON而不是'lastName' –