2013-04-23 3 views
1

방금 ​​최신 jackson-module-jsonSchema (2.2.0)를 다운로드했으며 누군가가 복잡한 Java 유형에 대한 스키마 생성 예제를 제공 할 수 있는지 궁금해하고있었습니다 (예 : 일부 SubObject 또는 List<SubObject>을 포함하는 유형)? 어떤 의미에서Jackson JSON 스키마의 복잡한 Java 유형 생성

ObjectMapper m = new ObjectMapper(); 
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper(); 
m.acceptJsonFormatVisitor(m.constructType(RuleSet.class), visitor); 
JsonSchema jsonSchema = visitor.finalSchema(); 
return jsonSchema; 
+0

'RuleSet '과 참조 된 유형의 정의를 보여줄 수 있습니까? 그렇게하면 생성되는 것을 더 쉽게 볼 수 있습니다. – StaxMan

+0

@StaxMan 따라서 JsonPoperty 주석을 사용하여 주석을 추가 한 속성이 List 대신 Object [] 인스턴스를 반환한다는 것을 알게되었습니다. 잭슨은 분명 그 시점에서 더 이상 아무것도 결정할 수 없었기 때문에 부동산 이름에 남겨 두었습니다. List 으로 전환했을 때 Jackson이 예상대로 작동하고 MyObject 스키마에 입력되었습니다. – Tom

+1

아! 네, 그렇게 설명 할 수 있습니다. 문제를 나타내는 일종의 자리 표시자가 있다면 좋을 것입니다. – StaxMan

답변

1

예 :

나는 다음과 같이 성공적으로 "평면"스키마를 생성 할 수 있었다? 루트 유형을 사용하여 스키마를 생성 할 수 있어야하며 참조되는 유형은 스키마 정의를 재귀 적으로 생성해야합니다.

+0

위의 예에서 RuleSet 클래스는 복합 유형이지만 결과 스키마는 평면입니다. 참조 된 유형에 대해 생성 된 스키마가 없습니다. 내가 놓친 게 있니? – Tom

+0

확인. 내 이해는 참조 된 형식을 스키마 내에서 정의해야한다는 것입니다. 그러나 나는이 스키마를 광범위하게 사용하지 않았다. – StaxMan