2011-07-25 35 views
15

Tôi có ứng dụng WPF này lấy dữ liệu từ dịch vụ web REST và trả về dữ liệu JSON. Sau đó, dữ liệu này sẽ được chuyển đổi thành xml. Tệp xml này sau này sẽ được chuyển đổi thành JSON để được so sánh với dữ liệu JSON mới từ dịch vụ web REST gọi cùng một hàm. Làm thế nào để tôi làm điều này?So sánh hai JObject hoặc JArray

Dưới đây là một mẫu của những gì tôi đã làm:

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

Bạn đã thử gì cho đến nay? Bất kỳ mã nào nói riêng mà bạn đang gặp sự cố? –

Trả lời

28

Dường như JObject không ghi đè Equals phương pháp. Tuy nhiên, JObject thừa hưởng lớp JToken và JToken có phương thức tĩnh DeepEquals, có thể được sử dụng để xác định xem một JToken có bằng JToken khác hay không. Vì vậy, bạn có thể làm một cái gì đó như thế này:

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