Мне нужно преобразовать мои данные JSON в массив Javascript, используя следующие данные в файле Data.json,

[{
        "nid": 1,
        "Desc": "Extra Style Window",
        "Xvalue": "448",
        "Yvalue": "458",
        "ImgValue": "1"
    },
    {
        "nid": 2,
        "Desc": "Door",
        "Xvalue": "138",
        "Yvalue": "558",
        "ImgValue": "2"
    },
    {
        "nid": 3,
        "Desc": "Fittings",
        "Xvalue": "400",
        "Yvalue": "258",
        "ImgValue": "3"
    },
    {
        "nid": 4,
        "Desc": "Fittings Spare",
        "Xvalue": "168",
        "Yvalue": "102",
        "ImgValue": "3"
    }
]

Я хочу выше данных в следующем формате массива,

var dataPoints = new Array([nid,"Desc",Xvalue,Yvalue,ImgValue],......[n]);

Я использую ниже код для моей стороны, но это не работает,

var arr = [];
for (var prop in data) {
    arr.push(data[prop]);
}
console.log(data.name);
alert(data.name);

Как конвертировать, у меня есть огромное количество данных в файле Json, пожалуйста, помогите мне исправить это. Если есть какой-либо другой способ решить, пожалуйста, дайте мне знать.

Спасибо.

2
Sathishkumar 27 Авг 2017 в 08:59

4 ответа

Лучший ответ

Вы можете сделать это довольно просто, используя функцию map Javascript:

var formattedArray = data.map(i => [i.nid, i.Desc, i.Xvalue, i.Yvalue, i.ImgValue]);

Это вернет массив, содержащий массивы значений каждого объекта:

enter image description here

И если вам нужен чисто функциональный способ решения этой проблемы (который можно использовать в любом массиве):

var formattedArray = data.map(item => Object.keys(item).map(i => item[i]));
3
Ben Rondeau 27 Авг 2017 в 06:29

Var jsonObject = JSON.parse (string); // извлекаем ваши данные в строку и передаем их.

JsonObject будет вашим массивом элементов на основе вашей строки json. Теперь вы можете перебрать jsonObject и получить доступ к его желаемому элементу / объекту.

0
Altaf Khokhar 27 Авг 2017 в 07:03

Просто вы можете последовать этому примеру.

//var json_data= {name: "Dhana", age: 25};    
var json_data= [{"name":1,"age":7},{"name":5,"age":6}];
var result = [];

for(var i in json_data){
    var a=json_data[i]
    result.push(a);
   }

console.log(result[0].age);

Если есть один объект или несколько объектов, вы можете успешно поместить эти объекты в массив. При использовании только метода .push () возникнут проблемы с разделением индексов внутри массива. Поэтому я предпочитаю этот пример, и он дает правильное решение для меня.

1
Dhananjaya 14 Ноя 2018 в 15:31

Вы можете попробовать следующий код для получения необходимого массива dataPoints

var dataPoints = [];
for (var prop in data) {
    var arr = [];
    for(key in data[prop]){
        arr.push(data[prop][key]);
    }
    dataPoints.push(arr);
}   
console.log(dataPoints); 

enter image description here

-1
mahip_j 27 Авг 2017 в 08:03