Попытка получить несколько значений под одним и тем же именем ключа вместо получения последнего значения ключа - PullRequest
0 голосов
/ 11 февраля 2019

Я давно пытался решить эту проблему, но пока не нашел решения.У меня есть строковый объект 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 голосов
/ 11 февраля 2019

То, что вы просите, не может быть сделано.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

и т. Д.

0 голосов
/ 11 февраля 2019

Невозможно делать то, что ты хочешь.У объекта может быть только ОДНО свойство с именем.Любое свойство, которое появляется после него, перезаписывает его.Вот почему вы получаете только последний.У вас есть

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)
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...