Prior discussion on https://gerrit.wikimedia.org/r/c/mediawiki/core/+/388486 and T210107 suggests that we do this by adding a getJson() method to WebRequest, which would validate the Content-Type and decode the data with appropriate error handling (via Exceptions or StatusValue objects).
The alternative, trying to munge the JSON data into a format that could be returned by existing WebRequest methods like getVal(), seems fraught with edge cases and potential for existing callers to receive unexpected data types that could result in incorrect behavior and potential security issues.