2014-04-18 1 views
1

모든 필드 또는 클래스에있는 모든 주석이 스키마에 직렬화되도록 Java 클래스의 스키마를 직렬화하려고합니다.주석이있는 스키마 직렬화도

나는 그것을하는 도구를 발견하지 못했습니다.

Avro는 문자열이 아닌 맵 키를 처리하지 않으며 FasterXML은 순환 참조를 처리하지 않습니다. 둘 다 스키마에 주석을 직렬화하지 않습니다.

이 작업을 수행하는 Java JSON (de) 직렬 변환기가 있습니까?

답변

0

Apache Thrift는 대부분의 언어로 복잡한지도 키를 지원하며 JSON 직렬화를 상당히 광범위하게 지원합니다. 유형 사이클 (자체 참조 유형 등)은 최근에 도입되었으며 아직 다양한 언어로 출시되거나 구현되지 않았습니다. 이는 가까운 시일 내에 높은 역량을 발휘할 수있는 강한 의지가있는 것 같습니다.

다음과 같은 것은 오늘 C++ dev 트렁크를 사용하여 작동합니다.

struct tree { 
    1: tree left (cpp.ref="") 
    2: tree right (cpp.ref="") 
} 

service simple { 
    void hello(1: string msg, 2: tree t) 
} 
0

요즘 Jackson JSON Schema Module은 순환 종속성을 지원합니다.

public class JacksonSchemaCyclic { 
    public static class Bean { 
     @JsonPropertyDescription("This is a property description") 
     public String anExample; 
     public int anInt; 
     public Bean aBean; 
    } 

    public static void main(String[] args) throws JsonProcessingException { 
     ObjectMapper mapper = new ObjectMapper(); 
     SchemaFactoryWrapper visitor = new SchemaFactoryWrapper(); 
     mapper.acceptJsonFormatVisitor(Bean.class, visitor); 
     JsonSchema jsonSchema = visitor.finalSchema(); 
     System.out.println(mapper 
       .writerWithDefaultPrettyPrinter().writeValueAsString(jsonSchema)); 
    } 
} 

출력 :

{ 
    "type" : "object", 
    "id" : "urn:jsonschema:stackoverflow:JacksonSchemaCyclic:Bean", 
    "properties" : { 
    "aBean" : { 
     "type" : "object", 
     "$ref" : "urn:jsonschema:stackoverflow:JacksonSchemaCyclic:Bean" 
    }, 
    "anInt" : { 
     "type" : "integer" 
    }, 
    "anExample" : { 
     "type" : "string", 
     "description" : "This is a property description" 
    } 
    } 
} 
다음 버전 2.4.1을 위해 작동하는 예입니다