json - 确定 JSON 解析错误的位置

标签 json parsing numbers line

我正在创建一个允许用户以 JSON 格式加载数据的 Web 应用程序。我目前正在使用以下函数来读取我保存在本地磁盘上的 JSON 文件:

function retrieveJSON(url, callback)
{
  // this is needed because FireFox tries to parse files as XML
  $.ajaxSetup({ mimeType: "text/plain" });

  // send out an AJAX request and return the result
  $.getJSON(url, function(response) {
    console.log("Data acquired successfully");
    callback(response);
  }).error(function(jqXHR, textStatus, errorThrown) {
    console.log("Error...\n" + textStatus + "\n" + errorThrown);
  });
}

这非常适用于格式良好的 JSON 数据。但是,对于格式错误的数据,控制台日志会显示以下内容:
Error...
parsererror
SyntaxError: JSON.parse: unexpected character

这几乎完全没有帮助,因为它没有告诉我意外的字符是什么或可以在哪个行号上找到它。我可以使用 JSON 验证器来更正本地磁盘上的文件,但是当页面从 Web 上的远程 URL 加载文件时,这不是一个选项。

如何获取任何错误的位置?如果可能,我想获取 token ,但我至少需要获取行号。项目要求向用户显示 JSON 代码的摘录并突出显示发生任何错误的行。

我目前正在使用 jQuery,但 jQuery 不是项目要求,因此如果另一个 API 或 JSON 解析器提供此功能,我可以改用它。

最佳答案

是的,有截止日期的生活绝非易事:)。

这可能会帮助你,经过几个小时的谷歌搜索,我找到了 jsonlint在 Git 中心。它看起来很有前途,它包括一个 shell script可以在服务器端使用,还有一个 browser JavaScript它的版本似乎正是您要找的。

希望这会帮助你。

关于json - 确定 JSON 解析错误的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13020875/

相关文章:

java - 为什么 Double.MIN_VALUE 不是负数

php - 拉维尔 4 : Fatal error: Class 'Patchwork\Utf8\Bootup' not found in autoload. PHP

java - 反序列化多维数组GSON

ios - 如何使用 SwiftyJSON 遍历 JSON?

ios - Swift Codable 空值处理

parsing - 我怎么能在yacc中识别皮卡丘语言?

javascript - Parseint——用 e+ chop

java - 乘以 DecimalFormat 数字(不再正确舍入)

excel - Excel 中的富文本格式(带有格式化标签)为无格式文本

swift - 管理从 url 下载的数据 - swift