httr GET 操作无法访问 JSON 响应

httr GET operation unable to access JSON response

我正在尝试从我的 R 脚本中的 API 调用访问 JSON 响应。 API 调用成功,我可以在控制台中查看 JSON 响应。但是,我无法访问其中的任何数据。

示例代码段是:

require(httr)

    target <- '#trump'
    sentence<- 'Donald trump has a wonderful toupe, it really is quite stunning that a man can be so refined and elegant'
    query <- url_encode(sentence)
    target <- gsub('#', '', target)
    endpoint <- "https://alchemy.p.mashape.com/text/TextGetTargetedSentiment?outputMode=json&target="
    apiCall <- paste(endpoint, target, '&text=', query, sep = '')

    resp <-GET(apiCall, add_headers("X-Mashape-Key" = sentimentKey, "Accept" = "application/json"))

    stop_for_status(resp)
    headers(resp)
    str(content(resp))
    content(resp, "text")

我遵循了 CRAN 的 httr 快速入门指南中的示例 (here) as well as this stack

不幸的是,我不断收到 "unused parameters 'text' in content()" 或“接受 class 的 'response.' 的 content() 没有定义。有人有什么建议吗?PS headers 将打印,resp$content 将打印原始比特流

扩展评论,您需要在对 content(...) 的调用中明确设置内容类型。由于您的代码不可重现,这里是一个使用人口普查局地理编码器的示例(returns 一个 json 响应)。

library(httr)
url <- "http://geocoding.geo.census.gov/geocoder/locations/onelineaddress"
resp <-GET(url, query=list(address="1600 Pennsylvania Avenue, Washington DC",
                           benchmark=9,
                           format="json"))

json <- content(resp, type="application/json")
json$result$addressMatches[[1]]$coordinates
# $x
# [1] -77.038025
# 
# $y
# [1] 38.898735

假设您实际上得到了 json 响应,并且它的格式正确,只需使用 content(resp, type="application/json") 就可以了。