2013-08-22 3 views
2

속성 이름이 itemsRequired, sortable_list 인 json 객체가 있습니다. 그리고 내 ObjectMapper에,이 sortable_listjson 파일의 Camel Case 속성 이름이 Java 객체에 매핑되지 않습니다.

mapper.setPropertyNamingStrategy(PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES); 

는 POJO에 적절한 속성에 매핑됩니다하지만 itemsRequired를 무시합니다. PropertyNamingStrategy을 제거하면 itemsRequired이 작동하고 sortable_list은 작동하지 않습니다. 내가 함께 일하기를 원한다면 어떻게해야합니까?

저는 fasterxml lib를 사용하고 있습니다. 나는 또한 codehaus의 jackson과 동일한 결과를 시도했다.


업데이트 : 다음과 같이 POJO는,

@JsonIgnoreProperties(ignoreUnknown = true) 
@JsonInclude(Include.NON_NULL) 
public class CreateList extends Header { 
    private String question; 
    private String placeholder; 
    private String help; 
    private int itemsRequired; 
    private List<String> list; 

    // Getter and Setter methods 
} 

입니다 그리고 JSON이다, 나는 위와 JSON이있는 경우

"create": { 
    "heading": "Activities Available to You", 
    "question": "List at least four activities at school and in your community that you may want to try out.\n", 
    "placeholder": "List an activity", 
    "help": "You can only have 10 list items", 
    "list": [], 
    "items_required": 4 
    } 

모든 것이 잘 작동합니다. 나는에 JSON을 변경할 때 일이

"create": { 
    "heading": "Activities Available to You", 
    "question": "List at least four activities at school and in your community that you may want to try out.\n", 
    "placeholder": "List an activity", 
    "help": "You can only have 10 list items", 
    "list": [], 
    "itemsRequired": 4 
    } 

itemsRequired는 후자의 경우에 무시되고 작동하지 않습니다.

두 경우 모두 items_required 또는 itemsRequired으로 이름을 지정했는지 여부에 관계없이이 기능을 사용하고 싶습니다.

+0

JsonProperty 주석 (http://jackson.codehaus.org/1.1.2/javadoc/org/codehaus/jackson/annotate/JsonProperty.html) 또한 POJO 클래스와 JSON 예제를 보여줄 수 있습니까? –

+0

질문이 업데이트되었습니다. – vikas

+0

해결 했습니까? 나는 동일한 문제가있다 – davidforneron

답변

0

제안 된 것처럼 수정하고 싶지 않은 항목에 대해서는 명시 적 주석을 사용해야합니다. 위의 코드가 작동하지 않는 이유를 모르겠습니다. Jackson 2.x 버전 (com.fasterxml 패키지)을 올바르게 사용하고 있습니다. 구형 1.x 버전을 사용하면 아무런 이점이 없습니다.

버그 보고서를 제출하는 것이 좋습니다. 이는 버그 일 수 있습니다. 그러나 이것을 알기 위해서는 약간의 샘플 코드가 필요합니다. 아마도이 문제에 대한 또 다른 설명이있을 것입니다.

+0

자세한 내용으로 질문을 업데이트했습니다. – vikas

+1

POJO 속성 이름으로 시작하고 예상되는 JSON 이름을 파생하기 때문에 이름 지정 전략에 대해 생각해 보면 알 수 없습니다. 별명을 정의 할 수 없습니다. 하나의 가능한 해결 방법이 존재합니다 : 필드 및 설정자에 대해 다른 이름을 지정할 수 있습니다 - 하나는 밑줄을 사용하고 다른 하나는 낙타의 경우입니다.추측하지만, 역 직렬화 (serialization은 문제가 될 수 있으며 2 개의 프로퍼티를 생성 할 수있다.) – StaxMan

+0

나는 이것을 할 생각을했을 것이다. 그러나 지금 우리는 json naming이 일관되게 언더 코트를 사용하고 낙타의 경우는 사용하지 않기로 결정했다. – vikas

0

@JsonProperty를 사용할 수 있습니다. 대상 클래스에 주석을 추가하는 것과 같은 아이디어가 없다면 항상 Mixins을 사용하십시오. 스네이크 케이스 및 다른 camelCase로 사용하고 싶다면 mixens를 사용하면 실제로 대상 클래스를 편집하지 않고 클래스에 속성 이름을 추가 할 수 있습니다. 대부분 제 3 자 클래스의 경우.

그러나 당신이 모두를 구문 분석 할 수 및 ObjectMapper에 등록됩니다 전략을 가질 수 있도록하기 때문에 나는 유지 mixin을 유지하지 않도록하는 데 도움이됩니다, custom naming strategy

역자 주 것이다 JsonProperty 등을 사용할 수

+0

잠재적 인 해결책에 대한 링크는 언제나 환영하지만, [링크 주변에 문맥을 추가하십시오] (http://meta.stackoverflow.com/a/8259/169503)하시기 바랍니다. 동료 사용자가 그것이 무엇이며 왜 저기에있어. 대상 사이트에 도달 할 수 없거나 영구적으로 오프라인 상태가되는 경우 중요한 링크의 가장 중요한 부분을 항상 인용하십시오. 외부 사이트에 대한 링크 이상일 경우 _ 이유는 무엇이며 어떻게 답변이 삭제됩니까?] (http://stackoverflow.com/help/deleted-answers)에 대한 이유가 될 수 있습니다. –