Javaで子の順序を無視して2つのJSONオブジェクトの等価性をテストする[closed] 質問する

Javaで子の順序を無視して2つのJSONオブジェクトの等価性をテストする[closed] 質問する

特に、Web サービスから返される JSON の単体テスト用に、子の順序を無視して 2 つの JSON オブジェクトの比較をサポートする JSON 解析ライブラリを探しています。

主要な JSON ライブラリのいずれかがこれをサポートしていますか? org.json ライブラリは単純に参照比較を行います。

ベストアンサー1

スカイスクリーマーズをお試しくださいJSONアサート

非厳密モードには、脆弱性を軽減する 2 つの大きな利点があります。

  • オブジェクトの拡張性 (例: 期待値が{id:1}の場合、 {id:1,moredata:'x'}も合格します。)
  • 緩い配列順序 (例: ['dog','cat']==['cat','dog'])

厳密モードでは、json-lib のテスト クラスのように動作します。

テストは次のようになります。

@Test
public void testGetFriends() {
    JSONObject data = getRESTData("/friends/367.json");
    String expected = "{friends:[{id:123,name:\"Corby Page\"}"
        + ",{id:456,name:\"Solomon Duskis\"}]}";
    JSONAssert.assertEquals(expected, data, false);
}

JSONAssert.assertEquals() 呼び出しのパラメーターは、expectedJSONStringactualDataString、およびisStrictです。

結果メッセージは非常に明確であり、これは非常に大きな JSON オブジェクトを比較するときに重要です。

おすすめ記事