2016-06-08 5 views
1

Я отсылается обратно объект JSON из службы и превратили его в строку, используя JSON.stringify но требуемая мощность не, как и ожидалось, как показано в первом примере ниже:Как преобразовать строку объекта JSON в массив Javascript

Что выглядит после stringify вызова на JSON объекта:

[{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}]

Что нужно выглядеть следующим образом:

["98798 TestApp","98799 TestApp Two"];

Как преобразовать объект JSON в презентабельный массив javascript?

То, что я пробовал -

  • Я попытался назвать первый stringify, который не дает нужный формат, как показано выше:

    var ridAppList = JSON.stringify(dataRID);

  • Я также попытался преобразования, что stringified в массив JS, используя parseJSON, но я получаю результат вроде: [object Obect], [object Object]:

    var ridAppList = $.parseJSON('[' + ridAppList + ']');

Это полное задание для контекста. Внутри функции Успех Ajax GET называют объект JSON возвращается

  success: function (result) { 
       var dataRID; 
       dataRID = result; 
       ridAppList = JSON.stringify(dataRID); 
       alert(ridAppList); 

      }, 

ответ

1

После того, как вы parsedJSON вы можете использовать map() как это

var string = [{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}]; 
 

 
var result = string.map(function(e) { 
 
    return e.RID += ' ' + e.appName; 
 
}); 
 

 
console.log(result)

Или с ES6 вы можете просто сделать это

var string = [{"RID":"98798","appName":"TestApp"},{"RID":"98799","appName":"TestApp Two"}]; 
 

 
var result = string.map(e => e.RID += ' ' + e.appName); 
 
console.log(result)

4

Вы можете использовать массив и создать новый с Array#map

var array = [{ "RID": "98798", "appName": "TestApp" }, { "RID": "98799", "appName": "TestApp Two" }], 
 
    result = array.map(function (a) { 
 
     return a.RID + ' ' + a.appName; 
 
    }); 
 
    
 
console.log(result);

2

ответы здесь действительны для примера, но вот решение для произвольного количества недвижимости и имена.

var flatObjects = [ 
 
     {"RID":"98798","appName":"TestApp"}, 
 
     {"RID":"98799","appName":"TestApp Two"}, 
 
     {"ABB":"98799","appMode":"Test", "feature": 2} 
 
    ].map(function (obj) { 
 
     var values = Object.keys(obj).map(function (key) { 
 
    \t  return obj[key] 
 
     }) 
 
     return values.join(' ') 
 
    }) 
 

 
var result = JSON.stringify(flatObjects) 
 
console.log(result)

Edit: Форматирование кода.

1

Этот ответ также использует Array.prototype.map, но сочетает в себе ES6 destructuring, arrow functions и template literals для особенно краткой процедуры.

var input = [ 
 
    {"RID":"98798","appName":"TestApp"}, 
 
    {"RID":"98799","appName":"TestApp Two"} 
 
]; 
 

 
var output = input.map(({RID, appName})=> `${RID} ${appName}`); 
 

 
console.log(output); 
 

 
// [ 
 
// "98798 TestApp", 
 
// "98799 TestApp Two" 
 
// ]