如何解决此错误:词法错误:json 文本中的无效字符。?

Posted

技术标签:

【中文标题】如何解决此错误:词法错误:json 文本中的无效字符。?【英文标题】:How can I fix this Error: lexical error: invalid char in json text.? 【发布时间】:2021-12-23 10:43:54 【问题描述】:

我正在尝试在 R 中使用 API、application/json,但是当我使用此代码时:


data <- fromJSON(content(XXX, type = "text"))

我看到下一个错误

Error: lexical error: invalid char in json text.
                      Producto;IdCompra;VentaN;
                     (right here) ------^

可能是什么问题?我知道我必须提取的数据是一个用“;”分隔的 csv 文件。

谢谢!

我在下面留下了我的数据的一瞥


glimpse(data)
List of 10
 $ url        : chr "https://xxx/x/x/"
 $ status_code: int 200
 $ headers    :List of 16
  ..$ server                   : chr "x"
  ..$ connection               : chr "keep-alive"
  ..$ vary                     : chr "Origin"
  ..$ vary                     : chr "Access-Control-Request-Method"
  ..$ vary                     : chr "Access-Control-Request-Headers"
  ..$ x-content-type-options   : chr "nosniff"
  ..$ x-xss-protection         : chr "1; mode=block"
  ..$ cache-control            : chr "no-cache, no-store, max-age=0, must-revalidate"
  ..$ pragma                   : chr "no-cache"
  ..$ expires                  : chr "0"
  ..$ strict-transport-security: chr "max-age=31536000 ; includeSubDomains"
  ..$ x-frame-options          : chr "DENY"
  ..$ content-type             : chr "application/json"
  ..$ content-length           : chr "402955"
  ..$ date                     : chr "Wed, 10 Nov 2021 20:18:55 GMT"
  ..$ via                      : chr "1.1 vegur"
  ..- attr(*, "class")= chr [1:2] "insensitive" "list"
 $ all_headers:List of 1
  ..$ :List of 3
  .. ..$ status : int 200
  .. ..$ version: chr "HTTP/1.1"
  .. ..$ headers:List of 16
  .. .. ..- attr(*, "class")= chr [1:2] "insensitive" "list"
 $ cookies    :'data.frame':    1 obs. of  7 variables:
  ..$ domain    : chr "#Httpxxxx.com"
  ..$ flag      : logi FALSE
  ..$ path      : chr "/"
  ..$ secure    : logi TRUE
  ..$ expiration: POSIXct[1:1], format: NA
  ..$ name      : chr "xxxxxx"
  ..$ value     : chr "xxxxxxxxxxxxx"
 $ content    : raw [1:402955] 43 61 74 65 ...
 $ date       : POSIXct[1:1], format: "2021-11-10 20:18:55"
 $ times      : Named num [1:6] 0 0.0621 0.2435 0.6197 0.8178 ...
  ..- attr(*, "names")= chr [1:6] "redirect" "namelookup" "connect" "pretransfer" ...
 $ request    :List of 7
  ..$ method    : chr "GET"
  ..$ url       : chr "https://xxxx/x/x/x"
  ..$ headers   : Named chr [1:2] "application/json, text/xml, application/xml, */*" "Bearer xxxxxxxx"| __truncated__
  .. ..- attr(*, "names")= chr [1:2] "Accept" "Authorization"
  ..$ fields    : NULL
  ..$ options   :List of 3
  .. ..$ useragent: chr "libcurl/7.64.1 r-curl/4.3.2 httr/1.4.2"
  .. ..$ cookie   : chr "=xxxxxxxxxx"
  .. ..$ httpget  : logi TRUE
  ..$ auth_token: NULL
  ..$ output    : list()
  .. ..- attr(*, "class")= chr [1:2] "write_memory" "write_function"
  ..- attr(*, "class")= chr "request"
 $ handle     :Class 'curl_handle' <externalptr> 
 - attr(*, "class")= chr "response"

【问题讨论】:

欢迎来到 SO,克拉拉。请让我们了解一下您的数据,以便我们为您提供帮助?在大多数情况下,如果没有可重现的示例,这是不可能的。 @Jan 谢谢! Jan,我留下了我的数据的一瞥,就像我的问题的答案一样。 嗨克拉拉。欢迎来到堆栈溢出。您尝试读取的数据不是 json 格式,因此无法使用 fromJSON 读取。它似乎是用分号分隔的格式,所以不妨试试read.table(text = content(XXX, type = "text"), sep = ";", headers = TRUE) @AllanCameron 非常感谢!!这行得通。我想感谢您的帮助,但我不知道是否可以在 cmets 中完成。 @Clara 我已将我的评论作为答案,因此您应该能够通过旁边的勾号接受它。我还编辑了您的问题,使其包含您想要显示的其他信息。我是否可以建议您删除该答案,因为所有相关信息都应包含在问题中,并且很可能被版主标记为“不是答案”并删除。谢谢。 【参考方案1】:

您尝试读取的数据不是 json 格式,因此无法使用fromJSON 读取。它似乎是用分号分隔的格式,所以不妨试试

read.table(text = content(XXX, type = "text"), sep = ";", headers = TRUE)

【讨论】:

以上是关于如何解决此错误:词法错误:json 文本中的无效字符。?的主要内容,如果未能解决你的问题,请参考以下文章

当我从数据库加载法语文本时,数据表返回无效的 json 响应

如何解决此错误格式不正确(无效令牌)

React Element Type 无效,为啥会出现此错误,如何解决?

JSON 序列化错误“字符 0 处的值无效

您如何解决此参数无效错误? (C#、VisualStudio、WinForms)

如何解决错误:无效的 JSON 输入:无法从 START_ARRAY 令牌中反序列化 Topic 实例