2011-07-25 24 views
15

Tengo esta aplicación WPF que obtiene datos del servicio web REST y devuelve datos JSON. Entonces, estos datos se convertirán a xml. Este archivo xml más tarde se convertirá nuevamente a JSON para ser comparado con los nuevos datos JSON del servicio web REST llamando a la misma función. ¿Cómo hago esto?Comparar dos JObjects o JArray

Aquí está una muestra de lo que hice:

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 
+0

¿Qué ha intentado hasta ahora? ¿Algún código en particular con el que tengas problemas? –

Respuesta

28

Parece que jobject no anula Igual método. Sin embargo, JObject hereda la clase JToken y JToken tiene el método estático DeepEquals, que se puede usar para determinar si un JToken es igual a otro JToken. Entonces, puede hacer algo como esto:

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