2014-09-06 1 views
-2

У меня есть ответ JSON как это:Concatenate JSON массивы в JSON объектов в JavaScript

{"result":[["abc","de"],["fgh"],["ij","kl"]]} 

Я хочу ответ, чтобы быть в форме:

{"result":["abc","de","fgh","ij","kl"]} 

Как я могу добиться этого?

+2

зависит от того, на каком языке вы создаете ответ в –

+0

Вы имеете в виду, что хотите преобразовать ответ в javascript? – javiyu

+0

Худший ответ u может получить: P 'x.split (" ["). Join (" "). Split ("] "). Join (" "). Replace (": ",": ["). ("}", "]}"); ' – Sunand

ответ

0
var test={"result":[["abc","de"],["fgh"],["ij","kl"]]}; 
var tmp=[]; 
for(var i in test.result){ 
    for(var j in test.result[i]){ 
     tmp.push(test.result[i][j]); 
    } 
} 
test.result=tmp; 
alert(JSON.stringify(test)); 

jsfiddle linkhttp://jsfiddle.net/fu26849m/

0

jsFiddle

var arrayToFlatten = [[0, 1], [2, 3], [4, 5]]; 

Native (от Merge/flatten an array of arrays in JavaScript?):

var flattenedNative = arrayToFlatten.reduce(function(a, b) { 
    return a.concat(b); 
}); 
alert(flattenedNative); // 0,1,2,3,4,5 

JQuery (от How to flatten array in jQuery?):

var flattenedJQuery = $.map(arrayToFlatten, function(n) { 
    return n; 
}); 
alert(flattenedJQuery); // 0,1,2,3,4,5 

Родной альтернатива (от Merge/flatten an array of arrays in JavaScript?):

var flattenedNativeAlt = [].concat.apply([], arrayToFlatten); 
alert(flattenedNativeAlt); // 0,1,2,3,4,5 
0

reduce() и concat() функции могут быть объединены, чтобы сгладить массив:

var json = {"result":[["abc","de"],["fgh"],["ij","kl"]]}; 

function concatArrays(a, b) { return a.concat(b); } 
json.result = json.result.reduce(concatArrays); 

console.log(json); //{"result":["abc","de","fgh","ij","kl"]} 

См. Его в действии ion:
http://jsfiddle.net/cazomufn/

0

Мое первое предложение для этого - вы должны создать json прямо, как вы хотите использовать. Не изменяйте его после получения.

Вы также можете использовать это, это даст вам дорожит, как вы хотите .:

var mainText= JSON.parse('{"result":[["abc","de"],["fgh"],["ij","kl"]]}'); 
    var arr = []; 
    for(var val1 in mainText.result) 
    { 
     arr = arr.concat(mainText.result[val1]); 
    } 
    mainText.result = arr; 
    console.log(JSON.stringify(mainText)); 
0

Мне нравятся lodash' flatten (если вы можете жить с другой зависимостью.)

json.result = _.flatten(json.result); 

// { result:['abc','de','fgh','ij','kl'] } 

Например reduce не поддерживается до IE9, но lodash все равно будет работать (сборка совместимости).

Смежные вопросы