2017-03-22 1 views
1

In meiner Anwendung muss ich testen, dass der JSON, der an uns zurückgesendet wird, ein exaktes Format validiert - in meinem Fall gibt es einen Body und einen Headblock, aber nicht mehr. Ich validierte das gegebene JSON-Schema gegen die 2 JSONs und beide sind gültig - gibt es eine Möglichkeit, mehrere "Head" - oder "Body" -Knoten nicht passieren zu lassen?JSON-Schema nicht erlauben mehrere gleiche Knoten

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "ValidResponse", 
    "type": "object", 
    "properties": { 
     "Head": { 
      "type": "object" 
     }, 
     "Body": { 
      "type": "object" 
     } 
    }, 
    "additionalProperties": false, 
    "required":["Head", "Body"] 
} 

Dieser Block sollte falsch validieren! --- v

{ 
    "Body" : { 
    }, 
    "Head" : { 
    }, 
    "Head" : { 
    } 
} 

Dieser Block sollte gültig validieren! --- v

{ 
    "Body" : { 
    }, 
    "Head" : { 
    } 
} 

Antwort

0

Dieser Block ist nicht gültig ...

{ 
    "Body" : { 
    }, 
    "Head" : { 
    }, 
    "Head" : { 
    } 
} 

Sie es durch einen Validator laufen kann wie http://jsonlint.com/

Wenn was auch immer Validator Sie verwenden sagt, es ist gültig Es ist ein Problem mit dem Validator.

+0

http://www.jsonschemavalidator.net/ ... dachte, dieser Validator funktioniert so, wie es eher "offiziell" scheint –

1

Das Problem ist, dass Ihre Eingabe nicht gültig JSON ist, so sollten Sie einen JSON-Parser oder Linter verwenden, dass Fehler auf einer solchen Eingabe vor der Übergabe an eine Schemaüberprüfung.

Die meisten JSON-Parser ignorieren jedoch eine der doppelten Eigenschaften Head. In jedem Fall wird Ihre JSON-Schema-Überprüfung niemals wissen, dass eine Eingabe doppelte Eigenschaften enthält.

+0

Ok, also gibt es keine Möglichkeit, das JSON-Schema überprüfen zu lassen, ob der JSON ein richtiges JSON-Format ist oder nicht ... das Json-Format selbst muss stimmen, bevor das Schema geprüft wird –

+0

Ja, Sie müssen das JSON selbst validieren, wenn es immer noch Text mit einem Linter oder mit einem JSON-Parser ist, der diese Art von Validierung durchführt (keine Ahnung, wenn da) ist irgendwas). –

Verwandte Themen