C#JSON;反序列化有时具有空值的数组(非空)

C#JSON;反序列化有时具有空值的数组(非空)

问题描述:

我想反序列化一个JSON响应,并且我想要一个检测数组是否为空的函数,如果它不是空的,我希望它返回值。C#JSON;反序列化有时具有空值的数组(非空)

JSON数组看起来像这样的空当:

{"metrics":[]} 

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

{"metrics":["flow"]} 

{"metrics":["energy"]} 

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

我如何检测呢?

它不适用于NullValueHandling,因为如果数组为空,它不是null,它根本没有任何值。

我绝对没有找到关于索引的错误。

我在我的类中返回数组作为列表。

+0

你说你和你的代码得到一个错误。你能发布相关的代码吗? – gunr2171

+2

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

+0

我会认为从NewtonSoft的JSON解串器将处理这一点很好。它会给你一个长度为0的数组。 –

假设你正在使用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>();