2017-10-12 25 views
0

我想反序列化一個JSON響應,並且我想要一個檢測數組是否爲空的函數,如果它不是空的,我希望它返回值。C#JSON;反序列化有時具有空值的數組(非空)

JSON數組看起來像這樣的空當:

{"metrics":[]} 

而當它不是空的它可以像任何的下面:

{"metrics":["flow"]} 

{"metrics":["energy"]} 

{"metrics":["flow","energy"]} 

我如何檢測呢?

它不適用於NullValueHandling,因爲如果數組爲空,它不是null,它根本沒有任何值。

我絕對沒有找到關於索引的錯誤。

我在我的類中返回數組作爲列表。

+0

你說你和你的代碼得到一個錯誤。你能發佈相關的代碼嗎? – gunr2171

+2

反序列化它每次相同的方式,然後只是檢查你的'列表'是否爲空或之後 – Jonesopolis

+0

我會認爲從NewtonSoft的JSON解串器將處理這一點很好。它會給你一個長度爲0的數組。 –

回答

3

假設你正在使用Newtonsoft.Json爲反序列化JSON:

class Data 
{ 
    public List<string> Metrics { get; set; } 
} 

var json = "{\"metrics\":[]}"; 
var obj = JsonConvert.DeserializeObject<Data>(json); 

obj.Metrics將是一個收藏,不爲空。

另外,即使是,你可以訪問它像

var metrics = obj.Metrics ?? new List<string>();