有没有一种简单的方法将Javascript对象转换为“名称”:“Fred”,“value”:“蓝色”样式对?

时间:2013-05-16 14:23:20

标签: javascript jquery json

我很肯定这个问题之前一定已被涵盖过,但我能找到它。所以....

我有一个像这样的对象

Object
name: Fred
lastname: Jones
city: Los Angeles

我想使用Javascript将其转换为如下所示的字符串:

//Do want this
[
 {"name": "name", "value": "Fred"},
 {"name": "lastname", "value": "Jones"},
 {"name": "city", "value": "Los Angeles"}
]

我发现的所有示例都使用JSON.parse()来获得看起来像这样的结果(我不想要):

//Don't want this
[
 {"name": "Fred", "lastname": "Jones", "city": "Los Angeles"}
]

我正在与另一位开发人员合作,他说这是Jquery解析对象的方式(编辑 - 他正在使用$ serializeArray(),所以也许JQuery有一个方法来帮助我。

任何想法都会受到欢迎。

谢谢!

4 个答案:

答案 0 :(得分:3)

此转换调用迭代源对象的属性并在结果数组中累积条目。

function toList( obj ) {
  var rv = [], k;
  for (k in obj) {
    if (obj.hasOwnProperty(k))
      rv.push({ name: k, value: obj[k] });
  }
  return rv;
}

var list = toList( myObject );

答案 1 :(得分:2)

var arr = []
for (var key in object_name) {
    arr.push({'name': key, 'value': object_name[key]})
}

循环键并将其添加到数组中。

答案 2 :(得分:1)

您可以遍历对象属性并创建数组

var a = array();
for (p in obj) {
    a.push({'name': p, 'value': obj[p]});
}

这应该得到你想要的结构。

答案 3 :(得分:0)

您应该可以在简单的for..in循环中执行此操作。

var yourObject = { name: "Fred", lastname: "Jones", city: "Los Angeles" },
    parsed = [];

for(var i in yourObject){
   parsed.push({ name: i, value: yourObject[i]})
}
相关问题