Why compare JSON by structure, not text
A text diff treats JSON as lines, so it reports differences that are not real and buries the ones that are. Reorder the keys of an object and every line looks changed, although the data is identical. Reformat one side and the diff fills with whitespace. A structural comparison parses both documents and compares values, so {"a":1,"b":2} and {"b":2,"a":1} are equal, 1 and 1.0 are the same number, and indentation never matters.
Each difference then comes with its path, such as $.items[1].price, which is what you need to write an assertion, file a defect or explain a failing test. A text diff gives you a line number in one particular formatting of the document.