2016-08-02 73 views
0

我學的JSON一些複雜的情況下,與JS轉換,我有這樣的情況:angularjs - 的JavaScript - 轉換對象值從字符串數組結構

我得到這個:

{ 
    "page": "POST,PUT:122", 
    "news": "PUT" 
} 

我要轉換爲這樣的:

{ 
    "page": { 
    "POST": [ 
     "POST" 
    ], 
    "PUT": 122 
    }, 
    "news": { 
    "PUT": [ 
     "PUT" 
    ] 
    } 
} 

我已經在做一個還原情況下,該轉換與@RomanPerekhrest這個偉大的解決方案,我想回到相同的結構,但我嘗試了一些辦法,但沒有成功,羅馬的解決方案:

var obj = { 
 
    "page": { 
 
    "POST": [ 
 
     "POST" 
 
    ], 
 
    "PUT": 122 
 
    }, 
 
    "news": { 
 
    "PUT": [ 
 
     "PUT" 
 
    ] 
 
    } 
 
}; 
 

 
Object.keys(obj).forEach(function (k) { 
 
    var innerKeys = Object.keys(obj[k]), items = []; 
 
    innerKeys.forEach(function(key) { 
 
    items.push((Array.isArray(obj[k][key]))? key : key + ":" + obj[k][key]); 
 
    }); 
 
    obj[k] = items.join(","); 
 
}); 
 

 
console.log(JSON.stringify(obj, 0, 4));

回答

1

var obj = { 
 
    "page": "POST,PUT:122", 
 
    "news": "PUT" 
 
}; 
 
var rez={}; 
 
Object.keys(obj).forEach(function(key){ 
 
obj[key].split(",").forEach(function(value){ 
 
    var item = value.split(":"); 
 
    var obj=rez[key] || {}; 
 
    if (item.length>1){  
 
    obj[item[0]]=isNaN(Number(item[1])) ? item[1] : Number(item[1]); 
 
    rez[key]=obj; 
 
    }else{ 
 
     obj[item[0]]=[item[0]]; 
 
     rez[key]=obj; 
 
    } 
 
}); 
 
}); 
 
console.log(rez);

+0

這似乎是正確的@VladuIonut,但我需要的 '122' 作爲INT(122 )不是一個字符串(「122」)。 :) –

+0

所有的值都是整數? –

+0

我更新了片段 –

相關問題