「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Javaで子の順序を無視してJSONオブジェクトが等しいかどうかを比較するにはどうすればよいですか?

Javaで子の順序を無視してJSONオブジェクトが等しいかどうかを比較するにはどうすればよいですか?

2024 年 11 月 20 日に公開
ブラウズ:611

How to Compare JSON Objects for Equality While Ignoring Child Order in Java?

Java で子の順序を無視しながら JSON オブジェクトの同等性をテストする

単体テストでは、Web サービスから返された JSON オブジェクトを比較するのが一般的です期待値に。ただし、一部の JSON ライブラリは厳密な参照比較を実行する可能性があり、子の順序の違いにより脆弱で失敗する可能性があります。

この目的のために、Skyscreamer JSONAssert ライブラリがソリューションを提供します。非厳密モードでは、次のような柔軟性が可能になります。

  • オブジェクトの拡張性を許可する: 比較が失敗することなく、期待されるオブジェクトに追加のフィールドを含めることができます。
  • 緩やかな配列順序を許可します: 配列は

対照的に、厳密モードは、json-lib のテスト クラスと同様に、より保守的に動作します。

JSONAssert を利用するには、テストを次のように構築できます。以下:

@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); // Non-strict mode
}

JSONAssert.assertEquals() のパラメーターには、予期される JSON 文字列、実際のデータ文字列、および厳密モードかどうかを示すフラグが含まれます。

JSONAssert は明確なエラー メッセージを提供します。これは、次の場合に重要です。大きな JSON オブジェクトを比較し、単体テストの堅牢性を確保します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3