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

时间:2017-10-12 18:45:50

标签: c# arrays json null json.net

我正在尝试反序列化JSON响应,我想要一个检测数组是否为空的函数,如果它不为空,我希望它返回值。

JSON数组在空时看起来像这样:

{"metrics":[]}

当它不为空时,它可能看起来像下面的任何一个:

{"metrics":["flow"]}

{"metrics":["energy"]}

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

我怎样才能发现这个?

它不能与NullValueHandling一起使用,因为如果数组为空,则它不为空,它根本没有任何值。

我发现有关索引的错误。

我在我的课程中将数组作为List返回。

1 个答案:

答案 0 :(得分:3)

假设您正在使用Newtonsoft.Json反序列化json:

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

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

obj.Metrics将是集合,而不是null。

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

那样访问它
var metrics = obj.Metrics ?? new List<string>();