I can imagine it is possible to let Java render JSON objects instead of full HTML. But what I'm hoping is that the data is already available in the JSON format, so I can just access that. Ideally it should be structured so that I can request a normal page, and get the whole hierarchy of modules and their copy and media manager urls for images.
I'm trying to find out if DD4T does something like this, but I might be on the wrong track if it's not possible in the first place.
At the moment I imagine that your current implementation is "baking" your HTML during publishing and including some JSP code which is executed on the server.
There's nothing to stop you from having your templates render pages as JSON data and serving those up to React. DD4T could certainly help you here, as the publishing side already serialises to JSON, though you may want to shrink the data to only that which you need in your React app and to omit any sensitive information.