в моем внутреннем коде, я вызвал функцию R из python с помощью rpy2
, и у меня есть вывод словаря из моей функции R, и мне нужно отобразить его как JSON
на конечной точке моего сервера. Но вывод json.dumps()
для моего словаря на самом деле не является объектом JSON
. Я понял, потому что вывод функции R как StrVector
, мне нужно преобразовать выходные данные в словарь, а затем использовать json.dumps
, но все еще не смог получить правильное форматирование JSON.
почему json.dumps
вел себя попал на данные в словаре? как правильно получить JSON структурированные данные в конечной точке? любая мысль?
входные данные в словаре :
вот данные из словаря, возвращенные функцией R. тип этого словаря <class 'rpy2.robjects.vectors.StrVector'>
mydict = {"score":[72.188,62.0955,19.3374],"category":"medium",
"guidance":"text description","readiness":true,
"features_used":{"name":"gcstotal","value":null,
"range_value":[3.6667,5,6.3333,7.6667,9,10.3333,11.6667,13,14.3333],
"range_frequency":[0.0024,0,0.0049,0.0016,0.0073,0.0195,0.0098,0.0138,0.9406],"importance":0}}
обновление :
Я только что сделал проверку качества для mydict
, это <class 'rpy2.robjects.vectors.StrVector'>
, поэтому я попробовал ниже в моем коде:
json.dumps(str(mydict))
, тогда я оказался ниже вывода. Я вызвал функцию R из python и использовал rpy2
для этого, но результат json.dumps()
для StrVector на самом деле не json. Зачем? есть идеи?
когда я загружаю этот словарь в json.dumps(mydict )
, у меня получается такой результат:
"{\"score\":[72.188,62.0955,19.3374],\"category\":\"medium\",
\"guidance\":\"text description\",\"readiness_flag\":true,
\"features_used\":{\"name\":\"gcstotal\",\"value\":null,
\"range_value\":[3.6667,5,6.3333,7.6667,9,10.3333,11.6667,13,14.3333],
\"range_frequency\":[0.0024,0,0.0049,0.0016,0.0073,0.0195,0.0098,0.0138,0.9406],\"importance\":0}} \n"
Я просто не понимаю, почему в итоге получается не- JSON объект из json.dumps
. Это проблема json.dumps
или я неправильно использовал словарь jsonify на конечной точке сервера? почему у меня выше вывод? любая идея? спасибо
обновление 2: :
после того, как я попробовал решение @Victor S, оно сработало для вставленного словаря, но я не уверен, что могу украсить объект mydict следующим образом следуйте:
def post(self):
if not request.get_json():
return bad_request('No input data provided')
raw_dict = request.json
input_json = json.dumps(raw_dict)
mydict = my_R_func(input_json)
mydict = """mydict""" ## inspired from @Victor S
res = json.loads(str(mydict))
res = json.dumps(res)
return jsonify(res)
могу ли я украсить mydict = my_R_fun c (input_ json); mydict = "" "mydict" ""? Есть какой-либо способ сделать это?