There are 3 diifferent ways to modify response body in Charles Proxy:
1) And this is my favorite - use Tools -> Rewrite.
Here you can set a set of rules for the network call, such as you desire. Do it by choose single ot multiple URL (or part of it) under the "location" section.
Under "Rules", add a new rule and choose "URL" for type and your desired URL response under "values" section. You can choose a URL that contains the desired response or either create a mock one (by using tools such as "mocky.io").
2) You can use "Map Remote" and do the same - choose the network you would like to modify with the URL that contains the response you desire.
3) "Map Local" is good in case you like to modify the response body frequently - choose the network you would like to modify with a local file (in your case .json file). You can modify it between requests and save it.
I prefer the "Rewrite" option since:
(1) it can contains multiple URLs to modify with multiple "desired" URLs and you just need to activate/deactivate by your current needs.
(2) "Map Remote" has bugs in some Charles versions where you import external rules and your previous rules are totally overriden.
(3) On "Rewrite" you can modify many things regarding the call, such as modifying substring in the response body (by choosing "Body" as the rule type), adding/modifying/removing query parameters or modifying the response status code.