我们的应用程序使用json文件进行配置。
我想弄清楚的情况是它是否是一个空对象,如[{}]我正在寻找一种可靠的方法,通过检查第一个Xnode,最后一个Xnode,Xattribute..something,因为HasElements将返回true为一个空对象。
请不要建议使用第三方库等。不按其他人的决定发生。
我正在使用的代码:
private static bool TryParseJson(MemoryStream msJson)
{
bool IsValid = false;
XElement root;
XmlReader xReader = JsonReaderWriterFactory.CreateJsonReader(msJson, new XmlDictionaryReaderQuotas());
//an empty json file ( [] ) will parse but have no elements hence the elements check.
//a file full of giberish...incorrect json format will fail to parse and throw exception hence the try catch
try
{
root = XElement.Load(xReader);
}
catch
{
return IsValid;
}
//an empty file ( [{}] will return positive for HasElements so we also get ?????
XNode ???? = root.FirstNode;
if (root.HasElements && !???)
{
IsValid = true;
return IsValid;
}
return IsValid;
}
我想我找到了一种处理空物体的方法。我使用有效的json和空json进行测试表明,空对象[{}]仍将返回单个元素,但该元素中没有节点,所以我选择了这个:
//an empty file ( [{}] will return positive for HasElements so we also get
bool IsEmptyObject = (root.Elements().Nodes().Count() > 0) ? true : false;
我仍然有兴趣听取其他人的贡献。
谢谢