很长一段时间以来,我一直在试图解决这个问题,但是我还没有找到解决方案。我有一个字符串化的JSON对象,我想提取以相同键名编写的值。因此,当我编写密钥时,总是得到该密钥的最后一个值。
我已经尝试了一些方法,但是没有运气。现在,我正在尝试调用该键,但是它总是获得最后一个值,我还尝试了调用包含JSON.parse的变量,并在末尾添加[0],例如:variable [0]。
//this is the stringified JSON below
var json = {"code": "1", "name": "client 1", "code": "2", "name": "client 2",
"code": "3", "name": "client 3", "code": "4", "name": "client 4"}
var json_parse = JSON.parse(json);
console.log(json_parse.code + ' - ' + json_parse.name);
目前的实际结果是:“ 4-客户4”。虽然预期结果是:“ 1-客户1,2-客户2,... 4-客户4”。
答案 0 :(得分:0)
无法做您想做的事。一个对象只能具有一个具有名称的属性。覆盖它之后的所有属性。这就是为什么您只得到最后一个。你拥有的是
var json = {"code": "4", "name": "client 4"}
您需要一个对象数组。
var items = [{
"code": "1",
"name": "client 1"
}, {
"code": "2",
"name": "client 2"
},
{
"code": "3",
"name": "client 3"
}, {
"code": "4",
"name": "client 4"
}
]
items.forEach(function(item) {
console.log(item.code, item.name)
})
答案 1 :(得分:0)
您的要求无法完成。 JSON是对象的字符串表示形式,当转换为javascript对象时,键将成为该对象的属性,因此解码该字符串时,您只会获得最新的值,因为它将一遍又一遍地将值重新赋予相同的键。
您应该查看数组的JSON表示形式
[{"code": "1", "name": "client 1"}, {"code": "2", "name": "client 2"},
{"code": "3", "name": "client 3" }, {"code": "4", "name": "client 4"}]
然后,在解析之后,您可以将它们迭代为:
json_parse[0].code,
json_parse[1].code
等