如何检查动态是否为空.

jam*_*rom 10 .net c# json dynamic json.net

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

var output = JsonConvert.DeserializeObject<dynamic>("{ 'foo': 'bar' }");
Run Code Online (Sandbox Code Playgroud)

我该怎么检查output是空的?一个示例测试用例:

var output = JsonConvert.DeserializeObject<dynamic>("{ }");
Assert.IsNull(output); // fails
Run Code Online (Sandbox Code Playgroud)

Kaz*_*kai 18

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

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

if (((JObject)output).Count == 0)
{
    // The object is empty
}
Run Code Online (Sandbox Code Playgroud)

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

  • dynamic不是一个实际的类型,所以Json.NET回归到使用JObject. (4认同)