Python имеет вольность, предназначенную только для этой проблемы. Вы ищете
json .loads ()
Этот код:
import json
from pprint import pprint
with open("test.json", "r") as rf:
jx = rf.read()
jx = json.loads(jx)
pprint(jx)
Возвращает вас в виде словаря:
{'context': {'cloud': {},
'custom': {'dimensions': [{'_MS.ProcessedByMetricExtractors': "(Name:'Requests', "
"Ver:'123.0')"},
{'InstanceKey': '12345678'}]},
'data': {'eventTime': '2020-5-5',
'isSynthetic': False,
'samplingRate': 123.0},
'device': {'roleInstance': 'SERVERNAME',
'roleName': 'ROLENAME',
'screenResolution': {},
'type': 'PC'},
'location': {'clientip': '0.0.0.0',
'continent': 'Europe',
'country': 'Netherlands'},
'operation': {'id': '12345678=',
'name': 'GET navigation/url',
'parentId': '12345678='},
'session': {'isFirst': False}},
'internal': {'data': {'documentVersion': '123.0', 'id': '12345678'}},
'request': [{'count': 123,
'durationMetric': {'count': 123.0,
'max': 12345.0,
'min': 12345.0,
'sampledValue': 12345.0,
'stdDev': 0.0,
'value': 12345.0},
'id': '12345678',
'name': 'GET navigation/Index',
'responseCode': 123,
'success': True,
'url': 'http://server1.test.com/12345678',
'urlData': {'base': '/navigation/123456',
'hashTag': '',
'host': 'server1.test.com',
'protocol': 'http'}}]}