首页 > 解决方案 > 将 API 响应从 JSON 转换为 R Data DataFrame

问题描述

我已经构建了一个返回 JSON 响应的 Flask API,我正在寻找一种可以将这个 HTML JSON 读入 R 数据帧的优雅方式?以下是 API 中的代码:

 @app.route('/get_model_results/<upload_id>', methods=['GET'])
 def get_model_results(upload_id):
     upload_id = str(upload_id)
     path_for_model_results = '/app/flask_app/model_results_' + upload_id + '.csv'
     return pd.read_csv(path_for_model_results).to_json(orient='records')

在我的 R 闪亮代码中,我使用 httr 并检索 JSON,但它以 HTML 形式返回。这是我闪亮的代码:

library(httr)
get_model_results <- function(upload_id) {
upload_url <- paste0(BACKEND_URL, "/get_model_results/", upload_id)
request <- httr::GET(upload_url, encoding = 'UTF-8')
out <- httr::content(request)
out

}

这是响应的片段:

model_df<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" 
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p>[{"central_time":"2020-04-07 15:47:00","Va_V":283.312}]</p></body></html>

标签: rapiflaskshiny

解决方案


如果您的响应都是这种格式,那么最简单的方法就是去掉 json 并解析它:

jsonlite::fromJSON(strsplit(strsplit(out, "<p>")[[1]][2], "</p>")[[1]][1])

#>          central_time    Va_V
#> 1 2020-04-07 15:47:00 283.312

推荐阅读