解析时的JSON投掷错误

时间:2017-02-24 20:34:47

标签: javascript jquery json syntax-error

这是我拥有的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:位于

的JSON中的意外标记

1 个答案:

答案 0 :(得分:3)

您有两个用逗号分隔的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。