比较两个JObject或JArray

时间:2011-07-25 10:55:33

标签: c# json.net

我有这个WPF应用程序,它从REST Web服务获取数据并返回JSON数据。然后这个数据将转换为xml。稍后将此xml文件转换回JSON,以与来自调用相同功能的REST Web服务的新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

1 个答案:

答案 0 :(得分:36)

似乎JObject不会覆盖Equals方法。然而,JObject继承了JToken类,而JToken具有静态方法DeepEquals,可用于确定一个JToken是否等于其他JToken。所以,你可以这样做:

if (JToken.DeepEquals(jObject1, jObject2))
{
    //DO SOMETHING
}