2011-10-21 3 views
0

나는 Json 클래스를 대표하여 Jackson에 의해 만들어진 Json Schema (아래 참조)를 가지고 있습니다.Json 스키마 유형을 설정하는 방법은 무엇입니까?

"startDate" : { 
    "type" : "number" 
}, 
"endDate" : { 
    "type" : "number" 
}, 

는하지만 난 startDateendDate의 유형이 문자열이 아닌 숫자 나 정수가되고 싶어요. 그것을 달성 할 수있는 방법이 있습니까?

감사합니다.

+0

상황을 조금 더 잘 이해할 수 있습니까? 이 스키마는 소유하지 않은 오브젝트 설명으로 생성 되었습니까? – sblom

+0

물론입니다. 나는 XMLgregorianCalendar 데이터 형의 2 개의 변수를 가진 Pojo 클래스를 가지고 있고, Jackson 메서드 - generateJsonSchema()의 도움을 받아 Pojo 클래스를 사용하여 Json 스키마를 생성한다. 내가 얻은 출력은 위에서 언급 한 것과 같습니다 (즉, Json 스키마의 startDate 및 endDate 유형은 문자열이어야합니다). 대신 NUMBER입니다. 이제는 문자열 형식의 출력을 기대합니다. Certianly 내 POJO에서 변수의 데이터 유형을 변경하고 싶지 않습니다. 어떤 상황에서도 가능할 것입니까? –

답변

2

자세한 정보를 얻으려면 원래 Java 객체를 표시해야합니다.

Jackson에서 JSON 스키마 생성의 구성 가능성은 제한적입니다. 그러나 그것이 모듈로 옮겨 졌다면, 훨씬 더 많은 설정이 가능 해졌다. 기고는 언제나 환영합니다.

+0

나를 맞아 주셔서 감사합니다. 확실한. 내 문제를 이해할 수있는 인스턴스의 경우 다음은 내 POJO의 변수 (4)입니다. 보호 된 문자열 empID; 보호 된 문자열 empname; 보호 된 문자열 지정; 보호 된 XMLGregorianCalendar doj; 그리고 Jackson에 의해 POJO를 Json 스키마로 변환하는 동안 doj를 예상하는 모든 변수에 대해 예상대로 출력을 얻습니다. { .... "법무부": { "유형": "번호" } } 가 지금은 String으로 번호 변경 될이 특정 유형을 변경하고 싶습니다. 지금은 분명 해요. –

+0

흠. 나는 확실히 일할 수있는 방법을 모른다. 하지만 'SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS'이 있습니다 - 활성화가 도움이 될 수 있습니까? 그렇지 않으면 '@JsonSerialize (as = String.class)'를 사용하도록 제안했지만 직렬화가 중단 될 수 있습니다. – StaxMan