2017-10-20 6 views
1

Je suis en train de créer un schéma pour faire en sorte que l'extérieur fourni JSON est de la forme suivante:Comment demander une propriété à l'aide de JsonSchema.NET?

{ Username: "Aaron" } 

En ce moment, je crée un objet JSchema Newtonsoft en C# en faisant:

var sch = new JSchema() 
{ 
    Type = JSchemaType.Object, 
    AllowAdditionalProperties = false, 
    Properties = 
    { 
     { 
      "Username", 
      new JSchema() { Type = JSchemaType.String } 
     } 
    } 
}; 

Ceci est proche, mais ne nécessite pas la présence de la propriété Username. Je l'ai essayé ce qui suit:

var sch = new JSchema() 
{ 
    Type = JSchemaType.Object, 
    AllowAdditionalProperties = false, 
    Properties = 
    { 
     { 
      "Username", 
      new JSchema() { Type = JSchemaType.String } 
     } 
    }, 
    Required = new List<string> { "Username" } 
}; 

mais je reçois:

Error CS0200 Property or indexer 'JSchema.Required' cannot be assigned to -- it is read only 

Et en effet, la documentation fait remarquer que la propriété requise est en lecture seule:

https://www.newtonsoft.com/jsonschema/help/html/P_Newtonsoft_Json_Schema_JSchema_Required.htm

Am J'ai raté quelque chose? Pourquoi la propriété Required serait-elle en lecture seule? Comment puis-je exiger la présence du nom d'utilisateur?

+0

Est-ce que le 'JSchema' ont des constructeurs surchargées? – Alex

+0

Ou vous pouvez essayer d'utiliser l'attribut '[JsonProperty (Required = Required.Always)]' sur les propriétés que vous souhaitez utiliser – Alex

Répondre

2

Vous ne pouvez pas définir Required (est seulement get) au lieu d'utiliser ceci:

var sch = new JSchema() 
{ 
    Type = JSchemaType.Object, 
    AllowAdditionalProperties = false, 
    Properties = 
    { 
     { 
      "Username", 
      new JSchema() { Type = JSchemaType.String } 
     } 
    }, 
}; 
sch.Required.Add("Username");