2017-03-01 59 views
0

我的影片格式像下面这样的JSON对象:清理一个JSON对象,它是完全的对象与1个属性

{ 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
} 

,而此格式适用于几十个属性。我正在寻找一种方式来有JSON更喜欢:

{ 
    "ATTR1": "Value1", 
    "ATTR2": "Value2" //and so on 
} 

有没有一种简单的方法在Javascript才能做到这一点?我试过类似的东西:

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     attr = attr[0]; 
    } 
} 

但是这一直没有奏效。有任何想法吗?

+0

是架构预测的?似乎有点可怕的事情任意做。 – Brad

回答

0

如果你想变异原来的obj,你可以这样做:

for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj[attr] = obj[attr][0]; 
    } 
} 
+0

谢谢!我最终使用这个解决方案,因为它改变了原始对象,并且与我已有的最接近。 – agoedken

0

你就近!

尝试这样:

var obj = { 
    "ATTR1": { 
     "0":"Value1" 
    }, 
    "ATTR2": { 
     "0":"Value2" 
    } //and so on 
}; 
var obj2 = {}; 
for(var attr in obj) { 
    if(obj.hasOwnProperty(attr)) { 
     obj2[attr] = obj[attr][0]; 
    } 
} 


alert(JSON.stringify(obj2)); 

小提琴:https://jsfiddle.net/coLxfeum/

2

使用上对象的关键减少为:

let foo = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } //and so on 
 
}; 
 

 
let res = Object.keys(foo).reduce((a,b) => { 
 
\t a[b] = foo[b]['0']; 
 
    return a; 
 
}, {}); 
 

 
console.log(res)

+0

我只是做'['0']',但基本上我会做。 – epascarello

+0

@epascarello,谢谢,不是一个坏主意:) – baao

0

遍历JavaScript对象是使用Object.keys()比较容易,海事组织。它在主流浏览器中得到了支持......无论如何,你想遍历顶级对象,抓住它的所有“smallObject”值并将它们弄平。您可以根据需要尽可能严格地执行检查(坚持使用“0”键等),但从根本上来说,要折叠的值是包含字符串值的单值对象似乎很重要?无论如何 - 这里是你如何能做到这一点:

var v1 = { 
    "ATTR1": { 
     "0": "Value1" 
    }, 
    "ATTR2": { 
     "0": "Value2" 
    } 
} 

function flatten(obj) { 
    Object.keys(obj).forEach(function(attr) { 
     var smallObj = obj[attr]; 
     var keys = Object.keys(smallObj); 
     if(keys.length === 1 && typeof smallObj[keys[0]] === 'string') { // && keys[0] === "0" ? 
      obj[attr] = smallObj[keys[0]]; 
     } // else throw Error(...) ? 
    }) 
    return obj; 
} 

console.log(flatten(v1)); 

> { ATTR1: 'Value1', ATTR2: 'Value2' } 
0

试试这个:

var jsonObj = { 
 
    "ATTR1": { 
 
     "0":"Value1" 
 
    }, 
 
    "ATTR2": { 
 
     "0":"Value2" 
 
    } 
 
}; 
 

 
var newJson = {}; 
 
for(var i = 0;i<Object.keys(jsonObj).length;i++) { 
 
    newJson[Object.keys(jsonObj)[i]] = jsonObj[Object.keys(jsonObj)[i]]["0"]; 
 
} 
 

 
console.log(newJson);

相关问题