Сравните два объекта JObject или 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

person patlimosnero    schedule 25.07.2011    source источник
comment
что ты уже испробовал? Какой-то конкретный код, с которым у вас возникли проблемы?   -  person Svetlin Panayotov    schedule 25.07.2011


Ответы (1)


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

if (JToken.DeepEquals(jObject1, jObject2))
{
    //DO SOMETHING
}
person Pavel Surmenok    schedule 25.07.2011