C#JSON;反序列化有时具有空值的数组(非空)
问题描述:
我想反序列化一个JSON响应,并且我想要一个检测数组是否为空的函数,如果它不是空的,我希望它返回值。C#JSON;反序列化有时具有空值的数组(非空)
JSON数组看起来像这样的空当:
{"metrics":[]}
而当它不是空的它可以像任何的下面:
{"metrics":["flow"]}
{"metrics":["energy"]}
{"metrics":["flow","energy"]}
我如何检测呢?
它不适用于NullValueHandling,因为如果数组为空,它不是null,它根本没有任何值。
我绝对没有找到关于索引的错误。
我在我的类中返回数组作为列表。
答
假设你正在使用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>();
你说你和你的代码得到一个错误。你能发布相关的代码吗? – gunr2171
反序列化它每次相同的方式,然后只是检查你的'列表'是否为空或之后 – Jonesopolis
我会认为从NewtonSoft的JSON解串器将处理这一点很好。它会给你一个长度为0的数组。 –