javascript - 访问多维对象 JavaScript

标签 javascript jquery json

好的。在尝试了大约一个小时的不同方法后,我的菜鸟占了上风(这个问题将证明这一点)。

我有一个 JSON 对象,如下所示:

{
    newEvent: {
        Event: {
            name: "Something",
            timestamp: {
                month: "07",
                day: "27",
                year: "2013",
                hour: "07",
                min: "42",
                meridian: "pm"
            },
            duration: "2",
            durationMeasure: "min"
        }
    },
    msg: "Event Added"
}

它在一个 jquery ajax 完整回调函数中返回,所以它位于一个名为 data 的参数中。
使用 Chrome,我可以 console.log() data,data.newEvent,data.msg,data['newEvent'],和 data['msg']。唯一返回除未定义之外的任何内容的是 data(打印上面的内容)

我的问题:在世界上,我如何获取data 中的任何内容?!任何对 JavaScript noob 的见解都将不胜感激! =)

编辑: 一段代码:

function eventAdditionalFinish(data,textStatus) {
    console.log("data: ",data,"\n");
    console.log("data['newEvent']: ",data['newEvent'],"\n");
    console.log("data['msg']: ",data['msg'],"\n");

    console.log("data.newEvent: ",data.newEvent,"\n");
    console.log("data.msg: ",data.msg,"\n");
}

Chrome 控制台的输出:

data:  {"newEvent":{"Event":{"name":"Something","timestamp":{"month":"07","day":"27","year":"2013","hour":"07","min":"42","meridian":"pm"},"duration":"2","durationMeasure":"min"}},"msg":"Event Added"}
data['newEvent']:  undefined 
data['msg']:  undefined 
data.newEvent:  undefined 
data.msg:  undefined 

最佳答案

好的,

如果您使用 jQuery 的 json() 函数代替 ajax(),它会将响应解析为 json 对象。

但是,如果您正在使用常用函数并将结果作为名为 data 的字符串,那么您需要类似这样的东西将其转换为对象...

response = JSON.parse(data);

然后你可以做...

response.newEvent.blah;

如你所料。

请注意,您的示例实际上不是有效的 json。属性名称应该被引用...

{
    "newEvent": {
        "Event": {
            "name": "Something",
            "timestamp": {
                "month": "07",
                ...

正如其他人所指出的,您还可以告诉 ajax() 为您将结果转换为一个对象(就像您调用 json()) 通过指定数据类型...

$.ajax({
     ...
     dataType: 'json',
     success: function(data) {
         alert(data.newEvent.Event.name);   
     }
});

关于javascript - 访问多维对象 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17903676/

相关文章:

javascript - 如何将<script></script>集成到fancybox2的content方法中

php - 如何访问JSON对象并插入数据库

javascript - 使 EventListener 仅触发一次,而不删除它 - 没有 jQuery

javascript - jQuery 插件中的私有(private)变量

javascript - 如何为主要浏览器(IE、firefox 和 google)的 div.onresize 事件注册或添加监听器?

javascript - jQuery 的函数($) (jQuery) 语法

jquery - $ ('<div/>' ) 是做什么的?

node.js - flutter 如何在http.get请求中传递变量

javascript - 将外部 JSON URL 标签和值拉入新数组

javascript - 嵌套 forEach 意外覆盖