我想转换以下格式 JSON:
{
id1: value1,
id2: value2
id3: value3,
...
}
进入
[
{ id: 'id1', value: 'value1' },
{ id: 'id2', value: 'value2' },
{ id: 'id3', value: 'value3' },
...
]
什么会快捷方便? 我们有什么方法可以使用underscore.js。 提前谢谢。
答案 0 :(得分:3)
您可以使用下划线提供的map
方法。
var input = {
"id1": "value1",
"id2": "value2"
};
var output = _.map(input, function (value, key) {
return {id: key, value: value};
});
答案 1 :(得分:2)
类似的东西:
var arr = Object.keys(obj).map(k => ({id:k, value:obj[k]}));
不需要下划线;-)如果你不使用babel或类似的东西,你可能需要写:
var arr = Object.keys(obj).map(function (k) { return {id:k, value:obj[k]};});
答案 2 :(得分:1)
使用以下内容:
var arr = [];
var obj = {
id1: "42",
id2: "hello",
id3: 6,
}
for (var i in obj) {
arr.push({id: i, value: obj[i]});
}
可替换地:
Object.keys(obj).map(function(value, index) {
return {id: value, value: obj[value]}
})
答案 3 :(得分:0)
您应该使用Object.prototype.hasOwnProperty
来确保您只添加直接在obj
上设置的密钥:
var arr = [];
for (var key in object) {
if (object.hasOwnProperty(key)) {
arr.push({ id: key, value: object[value] });
});
}
答案 4 :(得分:0)
你不能只使用parse
:
var object = JSON.parse(jsonString);
如果这不能产生预期的结果,那么只需遍历字符串并手动添加键即可。
答案 5 :(得分:0)
答案 6 :(得分:0)
使用下划线lib可以使用简单有效的方法。 请试一试:
_.map({id1: value1, id2: value2}, function(value, key) {
return {id: key, value: value};
});