2011-07-25 17 views
15

REST Webサービスからデータを取得し、JSONデータを返すこのWPFアプリケーションがあります。このデータはxmlに変換されます。このXMLファイルは後でJSONに変換され、同じ関数を呼び出すREST Webサービスからの新しいJSONデータと比較されます。これはどうすればいいですか?ここで2つの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

jオブジェクトは、Equalsメソッドをオーバーライドしていないようです。それにもかかわらず、JObjectはJTokenクラスを継承し、JTokenには静的メソッドDeepEqualsがあります。これは、1つのJTokenが他のJTokenと等しいかどうかを判断するために使用できます。したがって、次のようなことができます:

if (JToken.DeepEquals(jObject1, jObject2)) 
{ 
    //DO SOMETHING 
} 
関連する問題