You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复jsonlite词法错误?R语言调用API遇问题求助

解决R语言调用API时JSON解析错误的问题

问题原因

你遇到的错误是因为API返回的不是JSON格式数据,而是HTML页面(比如错误提示页、权限验证页),jsonlite试图把HTML当成JSON解析,自然会报语法错误。常见触发原因包括:

  • 请求URL拼写错误,服务器返回404错误页面
  • 缺少API认证信息(比如密钥、token),服务器返回权限不足的提示HTML
  • 请求头设置不对,服务器无法识别你需要JSON格式的响应,返回默认HTML页面
  • API服务本身故障,返回错误提示页面

排查和解决步骤

1. 先查看API返回的原始内容

别着急解析,先把服务器返回的内容打印出来,搞清楚到底是什么:

library(httr)

# 替换成你实际的API请求代码
response <- GET("你的API地址")

# 打印返回的原始文本
cat(content(response, "text"))

运行后就能看到真实的返回内容,如果是HTML,会直接显示类似"404 Not Found"或者"请登录"这类提示,帮你定位问题。

2. 检查请求的正确性

  • 核对API URL是否完全正确,包括路径、参数拼写
  • 确认是否需要添加认证信息:比如在请求头里加Authorization字段,或者在URL里拼接?api_key=你的密钥,具体按API文档要求来
  • 设置正确的请求头:很多API需要你明确告诉服务器要JSON响应,示例代码:
response <- GET(
  "你的API地址",
  add_headers(
    "Accept" = "application/json", # 明确要求JSON格式
    "Authorization" = "Bearer 你的token" # 如果需要认证的话
  )
)

3. 检查响应状态码

用status_code(response)查看请求状态码,快速判断问题:

  • 200:请求成功,应该能拿到合法JSON
  • 401:未授权,赶紧补全认证信息
  • 404:地址不存在,检查URL
  • 500:服务器内部故障,可能是API本身的问题,稍后再试

4. 安全解析响应

确认请求成功后再解析JSON,避免报错:

library(jsonlite)

if (status_code(response) == 200) {
  data <- fromJSON(content(response, "text"))
} else {
  cat("请求失败,状态码:", status_code(response), "\n")
  cat("返回内容:", content(response, "text"))
}

内容的提问来源于stack exchange,提问作者Agnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:31:59