We do this in Moonstone Island.
Our world is made up of individual islands (tilemaps) arranged on a 10x10 grid, so the JSON looks like this:
{"island1_1":{objects}, "island1_2":{objects}, "island1_3":{objects}, ...}
Based on the character's location in the world, we create the corresponding tilemap or multiple tilemaps and all their objects.
1. Look at a small zone around the player (about 1000px in each direction). If an island in that zone doesn't exist yet, it gets created together with its objects.
2. Check for islands that are far away from the player (more than 2400px). Those distant islands, and all objects on them, get destroyed.
This way, only a few islands (usually 1-2) are loaded at any given time, depending on where the player is.