Сравните два JObjects или JArray

У меня есть это приложение WPF, которое получает данные из веб-службы REST и возвращает данные JSON. Затем эти данные будут преобразованы в xml. Этот xml файл позже будет преобразован обратно в JSON для сравнения с новыми данными JSON из веб-службы REST, вызывающей ту же функцию. Как это сделать?

Вот пример того, что я сделал:

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

Кажется, что JObject не переопределяет метод Equals. Тем не менее, JObject наследует класс JToken, а JToken имеет статический метод DeepEquals, который может быть использован для определения того, равен ли один JToken другому JToken. Итак, вы можете сделать что-то вроде этого:

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