Как получить различия для двух ответов REST API? - PullRequest
0 голосов
/ 24 января 2020

Я бы хотел сравнить два остальных ответа API в Java. В настоящее время я использую библиотеку zjsonpatch, и с этим я могу получить разницу, но разница содержит значение одного из jsons. Я хотел бы иметь оба узла json.

Пожалуйста, найдите ниже мой код:

    ObjectMapper jacksonObjectMapper = new ObjectMapper();
    JsonNode beforeNode = jacksonObjectMapper.readTree(jsonActual);
    JsonNode afterNode = jacksonObjectMapper.readTree(jsonCurrent);
    JsonPatch patch = JsonDiff.asJsonPatch(beforeNode, afterNode);
    String diffs = patch.toString();

Ниже вывод, который я получаю

op: replace; path: "/businessServiceabilityResponse/0/serviceabilityDetail/0/serviceabilitySource"; value: "ELOC"]

Is есть ли способ получить оба узла, которые не совпадают?

1 Ответ

0 голосов
/ 29 января 2020

Вы можете попробовать использовать JSONAssert

JSONAssert.assertEquals(json1, json2, true);

json1:

[
  {
    studentname: "John",
    john: "123"
  },
  {
    studentname: "Ram",
    Ram: "124"
  }
]

json2

[
  {
    studentname: "Nhoj",
    john: "123"
  },
  {
    studentname: "Ram",
    Ram: "124"
  }
]

Выход:

Exception in thread "main" java.lang.AssertionError: [0].studentname
Expected: john
     got: Nhoj

    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:417)
    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:394)
    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:336)
    at com.smilep.java.thirteen.so.JSONAssertExample.main(JSONAssertExample.java:32)
...