2011-07-25 37 views
15

我有這個WPF應用程序從REST Web服務獲取數據並返回一個JSON數據。然後這些數據將被轉換爲xml。稍後,此xml文件將被轉換回JSON,以與來自調用相同函數的REST Web服務的新JSON數據進行比較。我該怎麼做呢?比較兩個JObjects或JArray

這裏是什麼,我做了一個樣本:

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

你到目前爲止嘗試過什麼?特別是你遇到問題的任何代碼? –

回答

28

看來,JObject沒有重載equals方法。儘管如此,JObject繼承了JToken類,並且JToken具有靜態方法DeepEquals,可用於確定一個JToken是否與其他JToken相同。所以,你可以這樣做:

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