массив json преобразовать в javascript массив

121
22 декабря 2019, 23:20

Посредством php получаю такой массив

[{"id":"1","name":"Первый пункт"},{"id":"2","name":"Второй пункт"},{"id":"3","name":"Третий пункт"}]

как его можно распарсить в javascript, чтобы дальше с ним работать?

P.S. имею ввиду как к нему обратиться в итоге, потому что объявляю его в переменную.

var obj2=
obj2 = JSON.parse(obj2);

А теперь не могу понять как например обратиться к id 2 и вывести name

Answer 1

А теперь не могу понять как например обратиться к id 2 и вывести name

Для этой цели JSON.parse не нужен:

let json = [{"id":"1","name":"Первый пункт"},{"id":"2","name":"Второй пункт"},{"id":"3","name":"Третий пункт"}]; 
let obj = json.find(x => x.id === '2'); 
if (!obj) { 
  console.log('object with id = 2 not found'); 
} else { 
  let name = obj.name; 
  if (typeof name === "undefined") 
    console.log('object with id = 2 not have "name"'); 
  else 
    console.log(name); 
}

Answer 2

Метод JSON.parse() при успешном выполнении возвращает JS-объект (экземпляр Object или Array).
В данном случае, результатом будет Array, а если конкретнее - массив объектов:

const jsonStr = '[{"id":"1","name":"Первый пункт"},{"id":"2","name":"Второй пункт"},{"id":"3","name":"Третий пункт"}]'; 
let arr = JSON.parse(jsonStr);   // [[object Object], [object Object], [object Object]]

Обращаться с этим массивом можно точно так же, как и с любым другим:

// доступ к элементу по его индексу 
let firstEntry = arr[0];       // [object Object] { id: "1", name: "Первый пункт" }
console.log(firstEntry.name);  // "Первый пункт"
// поиск элемента перебирающим методом
let entry = arr.find(obj => obj.id == 2); 
if (entry)
  console.log(entry.name); 
else
  console.log('Объект с id:2 в массиве не найден'); 
READ ALSO
Навигация js как сделать

Навигация js как сделать

Имеется большой landing page, разбитый на блоки

120
Работа с аудио в Safari на IOS

Работа с аудио в Safari на IOS

Пишу WebGL-приложение с использованием Threejs

120
Обработка POST запроса на Koa.js

Обработка POST запроса на Koa.js

Почему на запрос ctsrequest

114