为了账号安全,请及时绑定邮箱和手机立即绑定

无法修复错误:ListVector 类型的对象在烧瓶上不是 JSON 可序列化的?

无法修复错误:ListVector 类型的对象在烧瓶上不是 JSON 可序列化的?

牛魔王的故事 2022-10-25 16:06:54
我正在尝试请求会话信息,并且可以在 python 控制台上打印出会话信息,但无法在服务器端点上返回会话信息。该错误表示该对象不是 JSON 可序列化的。这是错误消息:TypeError: Object of type ListVector is not JSON serializable我发现这篇文章与我的帖子相关,我尝试了它的解决方案,但它对我不起作用。如何转换rpy2.ListVector为可JSON序列化的字典?任何解决方案?我的尝试:from flask import Flask, jsonify, requestfrom flask_restplus import Api, Resourceimport json##import osos.environ['PYTHONHOME'] = r"C:\Users\me\AppData\Local\Programs\Python\Python37"os.environ['PYTHONPATH'] = r"C:\Users\me\AppData\Local\Programs\Python\Python37\Lib\site-packages"os.environ['R_HOME'] = r"C:\Program Files\R\R-3.3.2"os.environ['R_USER'] = r"C:\Users\me\AppData\Local\Programs\Python\Python37\Lib\site-packages\rpy2"##app = Flask(__name__)api = Api(app)ns = api.namespace('ns')## load R functionimport rpy2import rpy2.robjects as robjects@api.route('/')class AResource(Resource):    def post(self):        sess = robjects.r("sessionInfo()")        return jsonify({'sessioninfo': sess})if __name__ == '__main__':    api.add_namespace(ns)    app.run(debug=True)在这里,我只是简单地向服务器端点发出请求,我可以在控制台上打印出会话信息,但无法在服务器端点上返回它。我怎样才能使这项工作?有什么快速的想法吗?谢谢是否有任何可能的解决方案来解决此错误?任何想法?
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

跟进您的上述尝试,我将您的问题修复如下:


class AResource(Resource):

    def post(self):

        sess = robjects.r("sessionInfo()")

        new_sess= { key : sess.rx2(key)[0] for key in sess.names }

        return jsonify({'sessioninfo': str(new_sess)})

现在您可以在服务器端点上看到 json 输出。


查看完整回答
反对 回复 2022-10-25
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信