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

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

我试图对会话信息进行请求,我可以在python控制台打印出会话信息,但在服务器端点上无法返回会话信息。错误说这个对象不是JSON可序列化的。下面是错误信息。

TypeError: Object of type ListVector is not JSON serializable

我发现 此职位 与我的帖子相关,我尝试了它的解决方案,但对我来说并不奏效,我怎么能将 rpy2.ListVector 的字典,可以 JSON 有什么解决办法吗?

我的尝试:

from flask import Flask, jsonify, request
from flask_restplus import Api, Resource
import json

##
import os

os.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 function
import rpy2
import 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)

在这里,我只是简单地对服务器端点提出请求,我可以在控制台打印出会话信息,但无法在服务器端点上返回。 我如何才能使这个工作? 任何快速的思路?

有什么办法可以解决这个错误吗,有什么想法吗?

python json flask rpy2
1个回答
1
投票

根据你上面的尝试,我修复了你的问题,如下。

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输出了。

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