2016-03-09 44 views
1

My Bean類如下所示。映射發生時,JSON對象包含重複的值。使用Jackson的ObjectMapper時的重複值

響應:

{"Id":"00PJ0000003mOgMMAU","Name":"web.xml","name":"web.xml","id":"00PJ0000003mOgMMAU"} 

爲什麼值越來越重複?

import org.codehaus.jackson.annotate.JsonIgnoreProperties; 
import org.codehaus.jackson.annotate.JsonProperty; 
@JsonIgnoreProperties(ignoreUnknown = true) 
public class AttachmentsMapper 
{ 
    @JsonProperty(value = "Id") 
    private String Id; 

    @JsonProperty(value = "Name") 
    private String Name; 


    public String getId() { 
      return Id; 
     } 
    public void setId(String Id) { 
     this.Id = Id; 
    } 
    public String getName() { 
     return Name; 
    } 
    public void setName(String Name) { 
     this.Name = Name; 
    } 

} 

回答

3

它不打印重複相同的字段兩次它打印它找到2個不同的字段。傑克遜看到你想要打印"name",因爲你有一個叫做getName()"Name"的獲取者,因爲你已經使用不同的鍵將Name字段註釋爲@JsonProperty。它看到不同的字段,因爲"name"!= "Name"。兩種解決方案:

  1. 將註釋移到getter。該字段在默認情況下被忽略,因爲它是私人的。

    @JsonProperty(value = "Name") 
    public String getName() { 
        return Name; 
    } 
    
  2. ,你似乎可以用1.8從com.codehaus使用傑克遜的最新版本。從那裏使用1.9或更好地使用com.fasterxml的最新版本。我嘗試了1.9版本的代碼,它在不移動註釋的情況下工作。
相關問題