首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析JQuery中的JSON响应时出错

解析JQuery中的JSON响应时出错
EN

Stack Overflow用户
提问于 2011-10-19 18:37:21
回答 3查看 1K关注 0票数 1

我得到了如下的JSON响应,但是一些索引有空格,比如'Employee Id‘。这就是我无法解析它的原因。有人能建议一下用JavaScript解析它的方法吗?

代码语言:javascript
复制
{
    "Employees": [
        {
            "Employee": {
                "Employee ID": "777",
                "Short Name": "abc",
                "First name": null,
                "Middle name": null,
                "Last name": null,
                "Designation": "Senior Engineer",
                "Ext-1": null,
                "Ext-2": null,
                "Mobile-1": null,
                "Mobile-2": null,
                "Email": "a.b@gmail.com"
            }
        },
        {
            "Employee": {
                "Employee ID": "888",
                "Short Name": "xyz",
                "First name": null,
                "Middle name": null,
                "Last name": null,
                "Designation": "Test Lead",
                "Ext-1": null,
                "Ext-2": null,
                "Mobile-1": null,
                "Mobile-2": null,
                "Email": "c.d@gmail.com"
            }
        }
    ]
}

我的代码是-

代码语言:javascript
复制
 function GetContacts() {
    $.ajax({
        type: "GET",
        contentType: 'application/json; charset=utf-8',
        url: "http://. . . . . .",

        dataType: "json",
        success: function(data) {

            //alert(data.getString("Employee ID"));
            $.each(data, function(i, contactList) {

                alert('First Loop' + i);
                alert('First Loop' + contactList[0]);

                $.each(contactList, function(j, Contact) {
                    //alert('Second Loop'+Contact);
                    var fnalObj = Contact;
                    //alert(fnalObj);
                    //alert(fnalObj.["Employee"]["Employee ID"]);
                    //alert(Employees[j]["Employee"]["Email"]);
                    //alert(Employees[0]["Employee"]["Employee ID"]);
                    alert(fnalObj.Employee.Email);
                    alert(fnalObj.Employee.Designation);
                    alert(fnalObj.Employee.Ext - 1);
                    alert(fnalObj.Employee.Mobile - 1);
                });
            });
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert(errorThrown);
            alert(textStatus);
        }
    });
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-19 19:11:43

解析是很好的。

问题是访问由非字母数字字符组成的键。如空格、破折号等。

这些属性必须使用[]表示法处理,如下所示

代码语言:javascript
复制
alert(fnalObj.Employee['Employee ID']);
alert(fnalObj.Employee['Ext-1']);

http://jsfiddle.net/h9sbn/上演示

票数 3
EN

Stack Overflow用户

发布于 2011-10-19 19:07:39

您不能执行fnalObj.Employee.Ext - 1。正确的方法应该是fnalObj.Employee['Ext-1']。这是jsFiddle http://jsfiddle.net/naryad/VNXa5/1/

使用fnalObj.Employee.Ext - 1时,它被解析为undefined - 1,然后返回NaN

这同样适用于fnalObj.Employee.Mobile - 1

票数 2
EN

Stack Overflow用户

发布于 2011-10-19 19:15:06

代码语言:javascript
复制
$.each(contactList, function(j, Contact) {
    //alert('Second Loop'+Contact);
    var fnalObj = Contact;
    $.each(finalObj, function (key, value) {
        var newKey = key.replace(/[\s]\-/g, '_');
        delete finalObj[key];
        finalObj[newKey] = value;
    });
    //revised alerts here.
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7819981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档