2016-05-24 4 views
0

Jacksonを使用してXMLを解析しようとしています。しかし、解析するときに要素から始める方法を理解することはできません。このAPIコールは、1以上を返すことはありません:Jacksonを使用して子要素からXMLを逆シリアル化する

<return_data api_call="get"> 
<users> 
<user> 
<username>jdoe</username> 
<firstname>John</firstname> 
<lastname>Doe</lastname> 
<account_expiration_date>0000-00-00</account_expiration_date> 
<signup_date>2015-01-01 15:00:36</signup_date> 
<deleted>0</deleted> 
<account_name>my account</account_name> 
</user> 
</users> 
</return_data> 

私は次のことを試してみましたが、エラーになっています「認識できないフィールド 『ユーザー』 ...無視としてマークされていません」。

@JacksonXmlRootElement(localName = "user") 
@JsonIgnoreProperties(value = { "api_call" }) 
public class User { 

@JsonProperty("username") 
private String userName; 

@JsonProperty("firstname") 
private String firstName; 

@JsonProperty("lastname") 
private String lastName; 

@JsonProperty("account_expiration_date") 
private Date expirationDate; 

@JsonProperty("deleted") 
private boolean deleted; 

@JsonProperty("signup_date") 
private Date signupDate; 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String getFirstName() { 
    return firstName; 
} 

public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 

public String getLastName() { 
    return lastName; 
} 

public void setLastName(String lastName) { 
    this.lastName = lastName; 
} 

public Date getExpirationDate() { 
    return expirationDate; 
} 

public void setExpirationDate(Date expirationDate) { 
    this.expirationDate = expirationDate; 
} 

public Date getSignupDate() { 
    return signupDate; 
} 

public void setSignupDate(Date signupDate) { 
    this.signupDate = signupDate; 
} 
} 

更新: は、私はそれが複数のラッパーを使用して動作させることができましたが、私は簡単に解決策があると願っています。

@JsonIgnoreProperties(value = { "api_call" }) 
public class ReturnDataWrapper { 

@JacksonXmlElementWrapper(localName = "users") 
@JsonProperty("users") 
private UserWrapper userWrapper; 

public UserWrapper getUserWrapper() { 
    return userWrapper; 
} 

public void setUserWrapper(UserWrapper userWrapper) { 
    this.userWrapper = userWrapper; 
} 
} 

@JacksonXmlRootElement(localName = "users") 
@JsonRootName("users") 
public class AlertAccountWrapper { 

@JacksonXmlElementWrapper(localName = "user") 
@JsonProperty("user") 
public User account; 

public User getUser() { 
    return account; 
} 

public void setUser(User account) { 
    this.account = account; 
} 

} 

Iも除去@JacksonXmlRootElement(ローカル名= "ユーザ")とUserクラスから@JsonIgnoreProperties(値= { "api_call"})。

答えて

1

これをデバッグする一般的な方法は、その逆を試すことです:一致するはずのオブジェクトを作成し、それをXMLとしてシリアル化し、期待どおりの方法を見てください。 これは、不一致がどこにあるかのヒントを与えるはずです。

関連する問題