Usually you loop through a given path in json to find what you're looking for. Then when it matches, you use that path to look up the rest of the keys you're interested in at that path.
The most efficient way to me is to organize it so that order doesn't matter. You can have all sorts of different json files, and they can all be loaded into memory/parsed at the start of the game, so that you have access to all the data given you know the path or key/attribute you're looking for. Just imagine if all the files were "included" into your project as one file.
I normally don't have the game modify json files, only json that is loaded into memory. Considering all the files are loaded into memory and the file that they came from is not relevant, then they don't really need to talk to each other. If you need to write back to the json file, then write whatever is relevant.