![](/img/trans.png)
[英]Convert Json object to Json array of key-value pair in javascript
[英]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
参数不是指数据数组中对象的键。
你可以试试这个:
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.