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

$.getJSON能否处理带有注释的JSONC文件?

解决jQuery解析带注释JSONC的问题

问题根源

$.getJSON本质是封装了jQuery的Ajax请求,默认会把响应内容按标准JSON规则解析,但标准JSON并不支持//或/* */类型的注释,所以带注释的JSONC文件会触发解析错误,导致脚本失效。

不用切换原生JS的解决方案

你可以用$.ajax替代$.getJSON,先获取JSONC的文本内容,手动清理注释后再解析成JSON,步骤如下:

  1. 写一个注释清理函数(注意跳过字符串内部的类似注释符号,避免误删内容):
function stripJSONComments(jsoncText) {
  // 移除多行注释 /* ... */
  jsoncText = jsoncText.replace(/\/\*[\s\S]*?\*\//g, '');
  // 移除单行注释 // ...,同时跳过字符串内部的//
  return jsoncText.replace(/\/\/.*(?=(["'])(?:[^\\]|\\.)*?\1|$)/g, '');
}
  1. 用$.ajax获取文本并处理:
$.ajax({
  url: 'filename.jsonc',
  dataType: 'text', // 先获取纯文本
  success: function(text) {
    try {
      const cleanedContent = stripJSONComments(text);
      const jsonData = JSON.parse(cleanedContent);
      // 这里执行你原来的业务逻辑
      // do stuff
    } catch (error) {
      console.error('JSONC解析出错:', error);
    }
  },
  error: function(xhr, status, err) {
    console.error('请求失败:', err);
  }
});

备选方案(后端配合)

如果有权限修改后端逻辑,可以在服务器端用JSONC解析库(比如Node.js的jsonc-parser)将带注释的JSONC转换成标准JSON后再返回前端,这样前端依然可以直接用$.getJSON请求。

为什么不能直接用$.getJSON?

$.getJSON默认强制dataType: 'json',jQuery会自动调用JSON.parse()按标准JSON规则解析响应,而注释在标准JSON中属于非法语法,必然导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:00:59