我使用Newtonsoft的Json.NET反序列化JSON字符串:如何檢查動態是否爲空。
var output = JsonConvert.DeserializeObject<dynamic>("{ 'foo': 'bar' }");
我如何檢查output
是空的?一個例子測試用例:
var output = JsonConvert.DeserializeObject<dynamic>("{ }");
Assert.IsNull(output); // fails
我使用Newtonsoft的Json.NET反序列化JSON字符串:如何檢查動態是否爲空。
var output = JsonConvert.DeserializeObject<dynamic>("{ 'foo': 'bar' }");
我如何檢查output
是空的?一個例子測試用例:
var output = JsonConvert.DeserializeObject<dynamic>("{ }");
Assert.IsNull(output); // fails
你DeserializeObject返回的對象將是一個JObject,具有Count
屬性。這個屬性告訴你對象有多少個屬性。
var output = JsonConvert.DeserializeObject<dynamic>("{ }");
if (((JObject)output).Count == 0)
{
// The object is empty
}
這不會告訴你,如果動態對象是空的,但它會告訴你,如果反序列化JSON對象是空的。
[根據文檔](http://james.newtonking.com/projects/json/help/html/M_Newtonsoft_Json_JsonConvert_DeserializeObject__1.htm),'DeserializeObject'返回'T',它不會是'JObject'。 –
動態不是實際類型,因此Json.NET退回到使用JObject。 –
您還可以檢查與下面的代碼:
var output = JsonConvert.DeserializeObject<dynamic>("{ }");
if (output as JObject == null)
{
}
爲我工作。
「{}」的輸出應爲空/空嗎?我期望它創建一個沒有屬性的通用對象。我期望反序列化「[]」會創建一個沒有元素的數組對象。 – nnnnnn