【问题标题】:JSON object returns undefined valueJSON 对象返回未定义的值
【发布时间】:2014-05-07 02:41:55
【问题描述】:

我从 http 调用中接收到一个 JSON 对象,并试图从中提取值。 JSON 对象包含:

data:{"userid":"007", "role":"spy"}

我使用以下代码将 role 属性分配给另一个变量,然后进行一些控制台日志检查:

    currentUserRole = data.role;    
    console.log("type of data: "+typeof(data));
    console.log("data: "+JSON.stringify(data));
    console.log("user role: "+currentUserRole);

日志产生:

type of data: object
data: [{"userid":"007", "role":"spy"}]
user role: undefined

我还尝试了另一种分配方法:

currentUserRole = data['role'];

但 currentUserRole 仍然未定义。如何将 JSON 对象的属性设置为变量?

【问题讨论】:

标签: javascript json


【解决方案1】:

根据您日志的第二行(对JSON.stringify() 的调用),您的data 实际上是一个数组 对象:

[{"userid":"007", "role":"spy"}]

如果它是您所期望的对象,它将如下所示:

{"userid":"007", "role":"spy"}

(区别很细微,但请注意缺少方括号)

试试这个:

currentUserRole = data[0].role;

显然,在生产就绪代码中,您可能需要进行一些额外的完整性检查,以确保 data 实际上是一个包含至少一个元素的数组。

【讨论】:

    【解决方案2】:

    这是一个列表。试试data[0].role

    【讨论】:

    • 嗨,我知道这对你来说似乎很明显,但不要忘记总 n00bs 可能会在未来某个时候偶然发现你的解决方案。您能否简要解释一下为什么这个解决方案有效(在这种情况下,它是一个嵌入数组中的对象,需要先对其进行索引)?给孩子们 ;)
    • 当然。但既然其他人给出了一个很好的答案,我就把它留在那里。在我以后的回复中会这样做
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多