jq --color-output to colorise the JSON,
less --RAW-CONTROL-CHARS for ANSI colours to work.
jq --color-output . data.json | less --RAW-CONTROL-CHARS
jq -C . data.json | less -R
From the jq documentation:
--color-output / -C By default, jq outputs colored JSON if writing to a terminal. You can force it to produce color even if writing to a pipe or a file using -C.
From the less documentation:
-R or --RAW-CONTROL-CHARS Like -r, but only ANSI "color" escape sequences and OSC 8 hyperlink sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly, provided that there are no escape sequences in the file other than these types of escape sequences.