如何修复R调用API时出现lexical error: invalid char in json text错误
报错原因
你当前使用JSON解析函数fromJSON()处理响应内容,但API实际返回的是分号分隔的CSV格式数据,并非JSON格式。虽然响应头里content-type标注为application/json,但这属于API服务端配置错误,实际返回内容和声明的格式不匹配,因此JSON解析器读到CSV的分号分隔符时会识别为非法字符,抛出对应报错。
解决方法
无需再调用JSON解析逻辑,直接将响应的文本内容按分号分隔的CSV格式读取即可,示例代码如下:
# 第一步:提取响应的文本内容(XXX为你原来的响应对象) response_text <- content(XXX, type = "text", encoding = "UTF-8") # 第二步:读取分号分隔的CSV数据 ## 方法1:使用base R自带函数(默认分号分隔、逗号为小数点) df <- read.csv2(text = response_text) ## 方法2:使用readr包的通用分隔读取函数 library(readr) df <- read_delim(response_text, delim = ";", show_col_types = FALSE)
如果读取出现乱码,可以根据实际情况调整encoding参数为对应编码(比如"GBK"等)。
内容的提问来源于stack exchange,提问作者Clara
相关产品推荐
相关产品推荐

