繁体   English   中英

在 javascript 中的 json 对象数组中获取 JSON 键值对

[英]get JSON key value pair within json object array in javascript

这是我的 JSON

[  
   {  
      "var5":"item-company-1",
      "asd2":"item-company-1",
      "tie1":"0",
      "cxs1":"481.891px",
      "xcve2":"130.563px"
   },
   {  
      "var5":"item-company-2",
      "asd2":"item-company-2",
      "tie1":"0",
      "cxs1":"481.891px",
      "xcve2":"130.563px"
   },
   {  
      "var5":"item-company-3",
      "asd2":"item-company-3",
      "tie1":"0",
      "cxs1":"481.891px",
      "xcve2":"130.563px"
   }
]

如何读取键和值? 请记住,我可能不知道密钥。 我尝试使用...

var data = JSON.parse(json);

Object.keys(data).forEach(function(prop) {
  // `prop` is the property name
  // `data[prop]` is the property value
     console.log(prop + " = " + data[prop]);
});

然而它只是输出

0 = [object Object]
1 = [object Object]
2 = [object Object]

编辑澄清

在 PHP 中,我得到以下输出,这是我试图通过 javascript 实现的

0:
var5 => item-company-1
asd2 => item-company-1
tie1 => 0
cxs1 => 481.891px
xcve2 => 130.563px
1:
var5 => item-company-2
asd2 => item-company-2
tie1 => 0
cxs1 => 481.891px
xcve2 => 130.563px
2:
var5 => item-company-3
asd2 => item-company-3
tie1 => 0
cxs1 => 481.891px
xcve2 => 130.563px

这应该工作...

data.forEach(function(obj) {
  for (let key in obj) {
    let value = obj[key];
    console.log(`Key: ${key}, Value: ${value}`)
  }
});

在实施方式中, Object.keys(data)被评估的数据阵列中的数字键的阵列。 所以回调函数中的prop参数不是指数据数组中对象的键。

Object.keys()

你可以试试这个:

 var data = [ { "var5":"item-company-1", "asd2":"item-company-1", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" }, { "var5":"item-company-2", "asd2":"item-company-2", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" }, { "var5":"item-company-3", "asd2":"item-company-3", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" } ] for(var i=0,item;item=data[i++];){ console.log("==========="+i+"=========") for(var key in item){ console.log(key+":"+item[key]) } }

JSON.parse有一个 reviver 函数,可以让你在解析时查看键/值对:

 var data = '[{"var5":"item-company-1","asd2":"item-company-1","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"},{"var5":"item-company-2","asd2":"item-company-2","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"},{"var5":"item-company-3","asd2":"item-company-3","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"}]'; JSON.parse(data, function(key, value) { console.log(key, "=>", value); return value; });

要仅迭代对象中的键,请使用嵌套循环:

 var json = '[{"var5":"item-company-1","asd2":"item-company-1","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"},{"var5":"item-company-2","asd2":"item-company-2","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"},{"var5":"item-company-3","asd2":"item-company-3","tie1":"0","cxs1":"481.891px","xcve2":"130.563px"}]'; var data = JSON.parse(json); for (var i = 0; i < data.length; i++) { console.log(i + ":"); for (var key in data[i]) { console.log(key, "=>", data[i][key]); } }

你实际上有对象的数组。 所以代码应该是这样的

var data = JSON.parse(json);
for (var key in data) {
    for (var prop in data[key]) {
        console.log(prop + " = " + data[key][prop]);
    }
}

在你的代码上试试这个

 var data = [ { "var5":"item-company-1", "asd2":"item-company-1", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" }, { "var5":"item-company-2", "asd2":"item-company-2", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" }, { "var5":"item-company-3", "asd2":"item-company-3", "tie1":"0", "cxs1":"481.891px", "xcve2":"130.563px" } ]; data.forEach(function(obj,k) { console.log(k+":"); // `prop` is the property name // `data[prop]` is the property value Object.keys(obj).forEach(function(key){ console.log(k+":" +key + " = " + obj[key]); }); });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM