2014-05-19 3 views
12

Ich habe ein json Dokument, in dem ein Teil entweder null oder ein Subobjekt sein kann, wie folgt aus:Wie spezifiziert man eine Eigenschaft als null oder eine Referenz?

[{ 
    "owner":null  
}, 
{ 
    "owner":{ 
     "id":1 
    } 
}] 

Die Frage ist, ob man über diese in ref unter Verwendung von json Schema Entwurf v4 zu modellieren?

Was Ich mag würde, ist so etwas wie dieses

{ 
    "type":"object", 
    "properties":{ 
     "owner":{ 
      "type":["null", "object"], 
      "$ref":"#/definitions/id" 
     } 
    }, 
    "definitions":{ 
     "id":{ 
      "type":"object", 
      "properties":{ 
       "id":{ 
        "type":"number" 
       } 
      } 
     } 
    } 
} 

Antwort

18

Was Sie auf dem Laufenden haben sollte funktionieren, wenn Sie die "type":"object" aus der Definition entfernen.

Eine genauere Alternative zur Angabe von Alternativen ist jedoch oneOf. Sie können Ihre "id" Definition unangetastet bleiben und nur verwenden:

"owner":{ 
     "oneOf": [ 
      {"type": "null"}, 
      {"$ref":"#/definitions/id"} 
     ] 
    } 
0

nullable Feld in OpenAPI unterstützt werden (auch bekannt als Swagger) Spezifikation v3.0.0

Also mit dieser neuen Spezifikation Ihrer Definition würde wie folgt aussehen:

"properties":{ 
    "owner":{ 
     "nullable": true, 
     ... 
    } 
},