lukas-krecan / JsonUnit

Compare JSON in your Unit Tests
Apache License 2.0
884 stars 115 forks source link

Pretty-printing JSON in IntelliJ diffs #749

Open joshuajaharwood opened 5 months ago

joshuajaharwood commented 5 months ago

Is your feature request related to a problem? Please describe. When comparing two JSON strings when a difference is found (when you click in IntelliJ), they are printed without any whitespace which can make visual inspection harder.

Describe the solution you'd like The ability to pretty-print both JSON strings for display in the IntelliJ differ would make visual comparison much easier.

Describe alternatives you've considered None

Additional context Tested on v2.38.0, Java 8.

lukas-krecan commented 5 months ago

Duplicate of https://github.com/lukas-krecan/JsonUnit/issues/44. I understand it would be a useful feature, but currently I do not have any capacity to implement it, sorry.

lukas-krecan commented 2 months ago

Hi @joshuajaharwood, I am currently looking into that. I am curious what would be your expectation, we can to the following

  1. Just normalize the JSONs, for example, order keys alphabetically and pretty print the JSONs. The donwside would be that the order of fields would change, is that acceptable?
  2. We can normalize the actual value based on expected. Instead of sorting fields alphabetically, we would make sure the order in the actual value is the same as in the expected one.
  3. We can put the differences to the top. Instead of sorting, we can start printing the JSON from the parts that are different. This may be useful for larger JSONs
  4. We can only print the parts that are different. What option would you prefer and why? Thank you
joshuajaharwood commented 1 day ago

Hi @lukas-krecan, deepest apologies for the late response.

I'd probably prefer option 3 given that I have large JSON blobs I need to compare for any differences - it'd make seeing differences at a glance much easier. I wouldn't mind if the order of fields changed, I only really care about the differences between actual and expected. Having to scroll through the entire thing to see differences when you're working with hundreds of differing JSON assertions can be troublesome!

Kind regards, Josh