Is the problem design patterns or opaque frameworks that rely on a ton of reflection?
The massive amounts of indirection which the IDE wouldn’t help you understand was the difficult thing. What encoding you use for that is pretty irrelevant. JSON would have been worse.
The problem with xml was that IDEs were unable to help you.