如何检查动态是否为空。

时间:2011-07-29 01:41:42

标签: c# .net json dynamic json.net

我正在使用Newtonsoft的Json.NET来反序列化JSON字符串:

var output = JsonConvert.DeserializeObject<dynamic>("{ 'foo': 'bar' }");

如何检查output是否为空?一个示例测试用例:

var output = JsonConvert.DeserializeObject<dynamic>("{ }");
Assert.IsNull(output); // fails

2 个答案:

答案 0 :(得分:14)

从DeserializeObject返回的对象将是一个JObject,它具有Count属性。此属性告诉您对象上有多少属性。

var output = JsonConvert.DeserializeObject<dynamic>("{ }");

if (((JObject)output).Count == 0)
{
    // The object is empty
}

这不会告诉您动态对象是否为空,但它会告诉您反序列化的JSON对象是否为空。

答案 1 :(得分:3)

您还可以使用以下代码进行检查:

var output = JsonConvert.DeserializeObject<dynamic>("{ }");
if (output as JObject == null)
{
}

这对我有用。