【问题标题】:NaN When trying to print json valuesNaN 尝试打印 json 值时
【发布时间】:2015-06-27 09:18:26
【问题描述】:

我试图解析一个 json,作为在链接中查询连接的响应。

当我在整个数组中执行 JSON.stringify 时,我可以在 console.log 中看到值 但是当我尝试在数组中获取单个值时,我得到了 NaN。 当我可以看到整个数组时,为什么我无法获得单个值。

这里是代码

  var response = jQuery.parseJSON(data);
  var person = response.person[0];

在上面的代码中,我获取数据作为 ajax 调用的响应

person 里面是一个数组,我可以把整个数组串起来。 如果我这样做了

console.log(JSON.stringify(person));

我会得到的

{"id":"someId","first-name":"someName","last-name":"someName, DMC-E, DMC-D","picture-url":"https://soempicture"}

但是当我尝试单独服用时

console.log(person.first-name);

我得到 NaN ,并尝试对其进行处理会导致 Null

我是否遗漏了什么,我应该进行字符串拆分以获取值吗?

谢谢

【问题讨论】:

  • 你得到NaN,因为person.first - nameundefined - undefined,这不是一个数字。

标签: javascript json nan


【解决方案1】:

您无法使用句点表示法访问 first-name 属性,因为名称包含破折号。

代码将被解释为person.first - name,即person.first 属性减去name 变量。

对名称不能作为标识符的任何属性使用括号表示法:

console.log(person['first-name']);

【讨论】:

  • 也就是说,如果您可以控制 JSON 数据,则可以使用 camelCasesnake_case 格式化变量以使解析更容易。
【解决方案2】:

要访问包含不能出现在标识符 (-) 中的字符的键,请使用方括号,即:

person["first-name"]

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2015-05-14
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2020-02-26
    • 2018-10-05
    • 2021-06-28
    • 2015-10-10
    相关资源
    最近更新 更多