比较两个JObjects或JArray

27

我有一个WPF应用程序,它从REST web服务获取数据并返回JSON数据。然后将该数据转换为xml,稍后将此xml文件转换回JSON以与调用相同函数的新JSON数据进行比较。我该如何做?

以下是我的一些示例:

HTTPGet req = new HTTPGet();
            req.Request("http://restservice//function");
            string str= req.ResponseBody;
            StringBuilder xmlTemplate = new StringBuilder("{\"?xml\":{\"@version\": \"1.0\",\"@standalone\": \"no\"},\"root\":REPLACE }");
            StringBuilder json = xmlTemplate.Replace(Constants.Constants.XMLREPLACEVAL, str); //this so that it will be same with the JObject from XML file
            JObject jObject1 = JObject.Parse(json.ToString());

            XmlDocument doc = new XmlDocument();
            string xml = File.ReadAllText("json.xml");
            doc.LoadXml(xml);
            string jsonText = JsonConvert.SerializeXmlNode(doc);
            JObject jObject2 = JObject.Parse(jsonText);

            if(jObject1.Equals(jObject2))
                //DO SOMETHING

你目前尝试了什么?有哪些代码让你感到困难? - Svetlin Panayotov
1个回答

61
似乎 JObject 没有重写 Equals 方法。不过,JObject 继承了 JToken 类,而 JToken 有一个静态方法 DeepEquals,可以用来判断一个 JToken 是否等于另一个 JToken。所以,你可以像这样做:
if (JToken.DeepEquals(jObject1, jObject2))
{
    //DO SOMETHING
}

有关更详细的示例,请参阅Json.NET 文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接