【问题标题】:JSON Throwing Error on Parsing解析时 JSON 抛出错误
【发布时间】:2026-01-23 20:50:01
【问题描述】:

这是我拥有的 JSON 字符串。我已经从 JSON 中删除了左括号和右括号,因为我需要使用 jQuery 中的 JSON 值来实际将数据加载到选择框中:

{
    "text": "Pediatric FA, CPR & AED (2015)",
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19"
}, {
    "text": "FA, CPR & AED Manual (2015)",
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73"
}

这是我的 Javascript 代码

$.post("items.cfm",{"term":request.term})
                .done(function(data){
                    try{
                        var obj = JSON.parse(data),
                        values = [];
                        $.each(data, function(i, obj) {
                            values.push({"label":obj[x].text, "value":obj[x].id, "price":obj[x].id.split('~')[3]});
                        })
                        response(values);
                    }catch(e){
                        alert(e);
                    }
                })
                .fail(function(e){
                    alert(e);
                });

每次运行都会报错

SyntaxError: Unexpected token , in JSON at position

【问题讨论】:

  • 您是否检查过浏览器控制台以查看从 HTTP 请求返回的实际 JSON 内容?它真的说“......在位置”而没有更多信息吗?
  • 您不能在 JSON 字符串中包含多个对象,除非它们被封装在方括号中作为数组。在 JSON 字符串的任一端添加 [] 以使其有效。
  • 我在 POST 中说我正在删除开始和结束括号,如果我不删除它们,我会收到此错误:TypeError: Cannot use 'in' operator to search for '4592' in

标签: javascript jquery json syntax-error


【解决方案1】:

您有两个用逗号分隔的 JSON 对象。如果你的意思是这是一个数组,你需要用数组括号括起来:

[
{
    "text": "Pediatric FA, CPR & AED (2015)",
    "id": "128177000002431552~Pediatric FA, CPR & AED DVD Set (2015)~YES~117.19"
}, {
    "text": "FA, CPR & AED Manual (2015)",
    "id": "128177000002431564~FA, CPR & AED Manual (2015)~YES~17.73"
}
]

附带说明,如果您的服务器正在生成无效的 JSON,您应该仔细查看生成 JSON 的代码。很有可能,有代码试图手动生成这个字符串,这是一种不好的做法。服务器应该使用库将返回的值转换为 JSON。

【讨论】:

  • 我在 POST 中说过,我正在删除开始和结束括号,如果我不删除它们,我会收到此错误:TypeError: Cannot use 'in' operator to search for '4592' in
  • @Hane:您遇到的另一个错误完全是另一个问题,with its own fix