2016-02-17 22 views
7

Próbuję udokumentować istniejące wykorzystanie JSON przy użyciu json-schema. System dopuszcza następujące dwa możliwości dla jednego z atrybutów obiektu.Jak reprezentować typy sum/union w schemacie json

Albo

{ 
    "tracking_number" : 123 
} 

Albo

{ 
    "tracking_number" : [ 123, 124, 125 ] 
} 

Jak mogę wyrazić to za pomocą schematu json?

Odpowiedz

6

Użyj anyOf, aby potwierdzić, że właściwość musi być zgodna z jednym lub innym schematem.

{ 
    "type": "object", 
    "properties": { 
     "tracking_number": { 
      "anyOf": [ 
       { "$ref": "#/definitions/tracking_number" }, 
       { "type": "array", "items": { "$ref": "#/definitions/tracking_number" } 
      ] 
    }, 
    "definitions": { 
     "tracking_number": { "type": "integer" } 
    } 
} 
+4

Miałem się śmiać, kiedy przeczytałem twoje imię ... To ktoś, kto może udzielić porady na temat JSON! – gnasher729

+0

Okazuje się, że "oneOf" było dla mnie lepsze w tej sytuacji. Ale postawiłeś mnie na właściwej ścieżce. –