2016-03-09 46 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版本的代码,它在不移动注释的情况下工作。
相关问题