2016-05-30 14 views
1

我正在使用JSON模式來生成C#業務對象。可爲空數組的雙精度JSON模式

我的一個對象包含一個具有可爲空的雙打列表的屬性。

IList<double?> List { get; } 

我想通過架構來實現這個。

平時要實現這一點,我使用這樣的結構:

"type": "number", 
"required": false 

但這並不數組

"Values": { 
    "type": "array", 
    "items": { 
     "required": false, 
     "type": "number" 
    } 
} 

工作時,此產生IList<double>屬性。

試圖找到官方架構site的一些信息。這是相當差的網站..

有沒有什麼辦法可以實現這種結構而不創建新的數據類型?

UPD.1 我使用jsonclassgenerator發電機C#代碼。這是不可能的遷移另一個工具...

UPD.2

"MyType": { 
     "id": "MyType", 
     "type": "object", 
     "properties": { 
      "Values": { 
       "type": "array", 
       "items": { 
        "type": "number", 
        "required": false 
       } 
      } 
     } 
    } 

生成類:

public partial class MyType 
{ 
    public string Title { get; set; } 
    public IList<double> Values { get; set; } 
} 
+0

我沒有看到從模式生成類的明顯方法,只能從一些示例JSON中生成類。你能添加一些關於你如何使用這個工具的信息嗎? – jdphenix

回答

0

這可能是更好的你的問題在兩個問題分開:

  1. 如何表達jsonschema包含一組數字或 空值。

  2. 如何從jsonschema定義中創建類型。

Q1可以通過多種方式解決。我會建議使用和oneOf條款是這樣的:

"MyType" : { 
    "id" : "MyType", 
    "type" : "object", 
    "properties" : { 
     "Values" : { 
      "type" : "array", 
      "items" : { 
       "oneOf" : [{ 
         "type" : "number" 
        }, { 
         "type" : "null" 
        } 
       ] 
      } 
     } 
    } 
} 

Q2也沒有關係jsonschema和依賴於定製公約或實現。對於jsonschemaIListarray是一樣的。

我建議你在你的反序列化結構中使用更一般的類型,並在需要時轉換爲IList