Я принимаю значение json, отправленное в запросе тела к приложению Python / Django, например:
127.0.0.1:8000/devices/1/?json={ "DeviceId":"1-9024-9929", "Date":"1/4/2019 9:52:2", "Location":"-1.000000000,-1.000000000", "Key":"{XXXXX-XXXX-XXXX-XXXX-XXXXX}", "Data":"{\"Value0\":\"{ \"ReferenceValue\":\"Elevation\", \"Prediction\":18.297534944, \"ModelPredictionFit\":3.196141712e-2, \"PCBasedEstimatedError\":3.196141712e-2, \"PCScore\":4.855016704, \"PredictionValueScore\":4.687027008e-2}\",}"}
При получении на стороне сервера я использую json.loads для преобразования в
{'DeviceId': '1-9024-9929', 'Date': '1/4/2019 9:52:2', 'Location': '-1.000000000,-1.000000000', 'Key': '{XXXXX-XXXX-XXXX-XXXX-XXXXX}', 'Data': '{"Value0":"{ "ReferenceValue":"Elevation", "Prediction":18.297534944, "ModelPredictionFit":3.196141712e-2, "PCBasedEstimatedError":3.196141712e-2, "PCScore":4.855016704, "PredictionValueScore":4.687027008e-2}",}'}
Хотя я могу получить доступ к любым значениям с помощью соответствующей клавиши, например
receivedJson["DeviceId"]
> 1-9024-9929
ключ «Данные» нельзя использовать для доступа к дочерним элементам, так как он неправильно отформатирован:
recievedJson["Data"]
> {"Value0":"{ "ReferenceValue":"Elevation", "Prediction":18.297534944, "ModelPredictionFit":3.196141712e-2, "PCBasedEstimatedError":3.196141712e-2, "PCScore":4.855016704, "PredictionValueScore":4.687027008e-2}",}
Каков наиболее эффективный способ преобразования этого вложенного массива обратно в пригодный для использования формат json / Dictionary (ключи, требующие одинарных кавычек)?