2017-10-20 50 views
1

我試圖創建一個模式,以確保供應外JSON是以下形式:如何使用JsonSchema.NET需要一個屬性?

{ Username: "Aaron" } 

現在,我創建在C#中Newtonsoft JSchema對象做:

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

這很接近,但不需要存在Username屬性。我已經試過如下:

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

,但我得到:

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

事實上,文件指出,required屬性爲只讀:

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

上午我錯過了什麼?爲什麼Required屬性是隻讀的?我如何要求用戶名的存在?

+0

是否'JSchema'有任何重載的構造函數? – Alex

+0

或者你可以嘗試在你想要的屬性上使用'[JsonProperty(Required = Required.Always)]'屬性 – Alex

回答

2

你不能設置Required(只是一個get)使用,而不是這樣的:

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