2017-04-16 24 views
1

2つのjsonファイルがあります。要素の書式設定や順序付けに関係なく同じでなければなりません。属性と配列が同じであるため2つのjsonが同等かどうかを確認してください

は、例えばこれらの二つjsonsが同等であり、その順序および書式の種類のみが異なっている:

{ 
    "type" : "integer", 
    "values": [ 
    { 
     "value": 1 
    }, 
    { 
     "value": 2 
    } 
    ] 
} 

{ 
    "values": [ 
    { "value": 1 }, { "value": 2 } 
    ], 
    "type" : "integer" 
} 

Iは、2つにそれらを格納する場合別の文字列と私はそれらを比較する、明らかに比較は、彼らは異なると言うでしょう。代わりに、それらが意味論的な観点から等しいかどうかをチェックしたいのですが、それらは同じ属性を持ち、それぞれの配列が同じであるためです。

2つの別々の文字列に格納すると、これら2つのjsonが同等であることをC#でチェックする方法はありますか? Newtonsoft.Json nugetパッケージのDeepEqualsを使用して

+1

両方を非直列化して結果を比較してください –

+0

JSONファイルの形式を事前に知らなくてもそれを行う方法はありますか?彼らのスキーマはあらかじめ定義されていないので、jsonsに含まれるデータのタイプにかかわらずそれを実行できるはずです。 – Jepessen

+1

これをチェックしてください。答え:http://stackoverflow.com/a/31926367/172769 –

答えて

2

using Newtonsoft.Json.Linq; 

var jsonText1 = File.ReadAllText(fileName1); 
var jsonText2 = File.ReadAllText(fileName2); 

var json1 = JObject.Parse(jsonText1); 
var json2 = JObject.Parse(jsonText2); 

var areEqual = JToken.DeepEquals(json1, json2); 
+0

あなたは知っていますか?それは、JArraysを比較しながら並べ替えることができますか? – tsul

+0

@tsul - これは別の質問です。ちょうどコメントとしてではなく、適切な質問として投稿してください。 –

関連する問題