尝试获取相同键名下的多个值,而不是获取键的最后一个值

时间:2019-02-11 15:40:07

标签: javascript json parsing

很长一段时间以来,我一直在试图解决这个问题,但是我还没有找到解决方案。我有一个字符串化的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”。

2 个答案:

答案 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