2014-04-01 6 views
1

JSON 문자열에서 중복 얻을 필드 :잭슨의 사용 : 내가 <a href="http://jackson.codehaus.org/" rel="nofollow">Jackson</a> 주석과 POJO가

Person p = new Person(); 
p.setFirstName("John"); 
p.setLastName("Smith"); 

//parse to json string 
ObjectMapper mapper = new ObjectMapper(); 
String personJson = mapper.writeValueAsString(p); 

그러나 :

public class Person { 
    @JsonProperty("first_name") 
    private String firstName; 

    @JsonProperty("last_name") 
    private String lastName; 

    public String getFirstName() { 
     return this.firstName; 
    } 

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

    public String getLastName() { 
     return this.lastName; 
    } 

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

} 

그때 나는 Person 인스턴스가 JSON 문자열로 구문 분석 & 생성 json string (personJson) 다음을 얻었습니다 :

{"first_name":"John","last_name":"Smith","firstName":"John","lastName":"Smith"} 

복제 된 필드가 왜 "first_name"& "firstName"이 되니, "last_name"& "lastName"을 JSON 문자열로 만드시겠습니까?

나는 또한 시도

===== 업데이트 === :

주석 :

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, 
     setterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE, 
     isGetterVisibility = JsonAutoDetect.Visibility.NONE) 

ObjectMapper :

ObjectMapper mapper = new ObjectMapper(); 
    mapper.getSerializationConfig().getDefaultVisibilityChecker() 
      .withFieldVisibility(JsonAutoDetect.Visibility.ANY) 
      .withGetterVisibility(JsonAutoDetect.Visibility.NONE) 
      .withSetterVisibility(JsonAutoDetect.Visibility.NONE) 
      .withCreatorVisibility(JsonAutoDetect.Visibility.NONE); 

하지만 여전히를 얻을 수 다른 POJO에서 JSON의 중복 된 속성 ...

+0

잭슨이 코드는 2.3.2 테스트 : 그것을 제거하기 위해, 나는 단지 인 mappersetVisibilityChecker에 한 번 더 제한을 추가 ":"Smith "}'. 그런데 잭슨은 [github] (https://github.com/FasterXML/jackson)로 옮겼습니다. –

답변

4

직접 문제를 해결할 수있었습니다.

난 아직 업데이트 후 JSON에서 필드를 중복있어 이유는 "입니다"로 시작하는 접근 방법을 얻을 수 내 다른 POJO에서 부울 속성, 예를 들어 있다는 것입니다 :

public class Other { 
    @JsonProperty("money_paid") 
    private boolean moneyPaid; 

    public boolean isMoneyPaid() { 
    return moneyPaid; 
    } 
    ... 
} 

생성 된 json에는 {money_paid : true, moneyPaid : true}가 포함되어 있습니다. "존", "LAST_NAME : - 출력은`{"FIRST_NAME는 "

.withIsGetterVisibility(JsonAutoDetect.Visibility.NONE) 
관련 문제