У меня есть простая строка 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.
Пожалуйста помогите!
Почему у этого есть семь голосов? Он не показывает усилия Любые, сделанные OP. Что они пробовали? Что не сработало? stackoverflow.com/help/как спросить



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете использовать 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] не является строкой, массив предварительно анализируется. Посмотрите живую демонстрацию, прежде чем оставлять комментарий
входное значение является строкой, а не объектом, и эта строка неправильно преобразована в строку.
@AZ_ Входное значение не является строкой. Джек, сделай плохую правку
он говорит У меня есть простая строка Json не уверен, может быть.
@AZ_ Да, у него есть строка json в ключе valueInput
Вам нужно перебрать массив, а затем проанализировать строковый 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/
Дайте мне знать, если есть какие-либо вопросы.
Вы можете использовать
JSON.parseдля преобразования json в объект.