The EDN format seems understandable if you open it up in a text editor, although very cumbersome.
The JSON format preserves enough for my liking - it does preserve the block references (I tried importing it into Logseq) but it does not keep the back-links from a referenced block, which I can live without. Is there a way to import the JSON into Obsidian?
Edit: the above is incorrect - the JSON does seem to keep back-links from a referenced block when it’s imported into, for example, Logseq. That is, the github issue I linked above does not apply when the JSON is imported into a non-Roam service.