Получить элемент из массива json javascript

У меня есть простая строка Json

[
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
]

Я хочу получить имя поля в данных в ValueInput с помощью Javascript.

Пожалуйста помогите!

Вы можете использовать JSON.parse для преобразования json в объект.

Eddie 25.03.2019 09:44

Почему у этого есть семь голосов? Он не показывает усилия Любые, сделанные OP. Что они пробовали? Что не сработало? stackoverflow.com/help/как спросить

Denny 25.03.2019 12:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
6
2
22 099
7

Ответы 7

Вы можете использовать JSON.parse

JSON.parse(o[0].valueInput).data[0].name

var o = [
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
]

console.info(JSON.parse(o[0].valueInput).data[0].name);

// To get all, use a loop

var arrO = JSON.parse(o[0].valueInput).data;

arrO.forEach((obj) => console.info(obj.name))

@Deepakgupta data[0] не является строкой, массив предварительно анализируется. Посмотрите живую демонстрацию, прежде чем оставлять комментарий

R3tep 25.03.2019 09:51

входное значение является строкой, а не объектом, и эта строка неправильно преобразована в строку.

AZ_ 25.03.2019 10:03

@AZ_ Входное значение не является строкой. Джек, сделай плохую правку

R3tep 25.03.2019 10:07

он говорит У меня есть простая строка Json не уверен, может быть.

AZ_ 25.03.2019 10:15

@AZ_ Да, у него есть строка json в ключе valueInput

R3tep 25.03.2019 10:16

Вам нужно перебрать массив, а затем проанализировать строковый JSON, чтобы вы могли получить доступ к массиву data. Затем просто зациклируйте этот массив data, чтобы получить значение каждого свойства name.

var arr = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}];

arr.forEach((arrObj) => {
  var jsonData = JSON.parse(arrObj.valueInput);
  jsonData.data.forEach(({name}) => console.info(name));
});

Вы можете использовать JSON.parse

var jsonArray = [
  {
    assetName: 'LCT',
    assetValue: '',
    typeValueInput: 'select',
    valueInputSelect: null,
    required: true,
    valueInput:
      '{"data":[{"name":"name1","id":"12"},{"name":"name2","id":"13"},{"name":"name3","id":"14"}]}'
  }
];

let name = jsonArray[0].valueInput;
name = JSON.parse(name);
name.data.forEach(value => {
  console.info(value.name, value.id);
});

Используйте JSON.parse и используйте map:

const data = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}]
const names = JSON.parse(data[0].valueInput).data.map(({ name }) => name);
console.info(names);

Ты можешь сделать:

const arr = [{"assetName": "LCT","assetValue": "","typeValueInput": "select","valueInputSelect": null,"required": true,"valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"}];

arr.forEach(o => JSON.parse(o.valueInput).data.forEach(({id, name}) => console.info(id, name)));

Вы можете использовать переменную array и функцию обратного вызова JSON.parse, чтобы получить имя key и val

let dt = [{
  "assetName": "LCT",
  "assetValue": "",
  "typeValueInput": "select",
  "valueInputSelect": null,
  "required": true,
  "valueInput": "{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
}];
let nameArray = [];

let dlt = JSON.parse(dt[0].valueInput, function(key, val) {
  if (key === 'name') {
    nameArray.push(val);
  }
})

console.info(nameArray)

Вот как это сделать.

let originalData = [
   {
      "assetName":"LCT",
      "assetValue":"",
      "typeValueInput":"select",
      "valueInputSelect":null,
      "required":true,
      "valueInput":"{\"data\":[{\"name\":\"name1\",\"id\":\"12\"},{\"name\":\"name2\",\"id\":\"13\"},{\"name\":\"name3\",\"id\":\"14\"}]}"
   }
];

let valueInput = JSON.parse(originalData[0].valueInput);

let data = valueInput.data;

console.info(data);

for (var i = 0; i < data.length; i++){
    console.info(data[i].name);
}

См. jsfiddle https://jsfiddle.net/3s1na4eL/3/

Дайте мне знать, если есть какие-либо вопросы.

Другие вопросы по теме