rpy2:json.dumps()的输出确实不是正确的json对象

问题描述 投票:0回答:1

在我的后端代码中,我用rpy2从python调用了R函数,并且我从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))

然后我最终低于输出。我从python调用了R函数,并使用了rpy2,但StrVector的json.dumps()的输出并不是真正的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.dumps中的非JSON对象结尾。是json.dumps的问题,还是在服务器端点使用错误的方式对jsonify词典进行了处理?为什么我有以上输出?任何的想法?谢谢

python r json rpy2
1个回答
0
投票

尝试

dict(zip(mydict.names, map(list, list(mydict))))

[C0致谢@CT朱]

显然,这不会处理嵌套列表,因此您可以使用pandas:

this answer
© www.soinside.com 2019 - 2024. All rights reserved.