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



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

JSON 数组在为空时如下所示:

{"metrics":[]}

当它不为空时,它可能看起来像以下任何一种:

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

我怎样才能检测到这一点?

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

我收到有关找不到索引的错误。

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

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

相关内容

  • 没有找到相关文章

最新更新