angularjs - 的JavaScript - 转换对象值从字符串数组结构
问题描述:
我学的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));
答
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);
这似乎是正确的@VladuIonut,但我需要的 '122' 作为INT(122 )不是一个字符串(“122”)。 :) –
所有的值都是整数? –
我更新了片段 –