比较两个JObjects或JArray [英] Compare two JObjects or JArray

查看:150
本文介绍了比较两个JObjects或JArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的WPF应用程序从REST Web服务获取数据,并返回一个JSON数据。然后,这些数据将被转换为XML。此xml文件后会被转换回JSON与来自REST Web服务调用同一个函数新的JSON数据进行比较。我如何做到这一点。

I have this WPF application which gets data from REST web service and returns a JSON data. Then this data will be converted to xml. This xml file later will be converted back to JSON to be compared with new JSON data from REST web service calling same function. How do I do this?

下面是我做的一个示例:

Here is a sample of what I did:

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


推荐答案

似乎JObject没有重载equals方法。尽管如此,JObject继承JToken类和JToken具有静态方法DeepEquals,这可以被用来确定是否有一个JToken等于其他JToken。所以,你可以做这样的事情:

It seems that JObject doesn't override Equals method. Nevertheless, JObject inherits JToken class and JToken has static method DeepEquals, which can be used to determine if one JToken is equal to other JToken. So, you can do something like this:

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

这篇关于比较两个JObjects或JArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆