首页 > 解决方案 > 如何通过Javascript解析没有密钥的多维JSON数据?

问题描述

我有有效的 JSON 数据:

{
 "bitcoin": [
    "-0.47",
    "-0.46",
    "-0.42"
 ],
 "maker": [
    "8.29",
    "8.29",
    "6.89"
 ]
}

如何从没有密钥的此类数据中获取值?

编辑:在@kolzar 和@FZs 的帮助下,我简单地通过以下代码管理它:

for (var key in obj) {
  console.log(key + obj[key]);
}

标签: javascriptjson

解决方案


在数组 ( [...]) 中,键是数字。
在 JS 中,您可以通过两种方式访问​​属性:

  • container[key_as_expression]或者
  • container.key_as_identifier

由于 JS 标识符不允许标识符以数字开头,因此只能通过第一种方式访问​​数字键:

data={
 "bitcoin": [
    "-0.47",
    "-0.46",
    "-0.42"
 ],
 "maker": [
    "8.29",
    "8.29",
    "6.89"
 ]
}

console.log(data.bitcoin[0]) //"-0.47"
console.log(data.bitcoin[1]) //"-0.46"

由于第一种语法允许表达式,因此密钥不得硬编码:

n=0
data={
 "bitcoin": [
    "-0.47",
    "-0.46",
    "-0.42"
 ],
 "maker": [
    "8.29",
    "8.29",
    "6.89"
 ]
}

console.log(data.bitcoin[n]) //"-0.47"
console.log(data.bitcoin[n+1]) //"-0.46"

并且有很多循环,可以帮助你:

  • for- 最常用的循环。要对数组的所有元素执行某些操作:

    data=[1,2,3,"hello","world"]
    
    for(let i=0;i<data.length;i++){
      console.log(i,data[i])
    }

  • for of- 更简单的语法,但键不可用。例子:

    data=[1,2,3,"hello","world"]
    
    for(let x of data){
      console.log(x)
    }

  • array.forEach- 对数组的所有元素执行函数:

    data=[1,2,3,"hello","world"]
    
    data.forEach(function(x,i){console.log(i,x)})

还有更多类似的选择!


推荐阅读