2

我很肯定这个问题之前一定已经讨论过,但我可以找到它。所以....

我有一个像这样的对象

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

4 回答 4

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 );
于 2013-05-16T14:28:37.883 回答
2
var arr = []
for (var key in object_name) {
    arr.push({'name': key, 'value': object_name[key]})
}

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

于 2013-05-16T14:29:19.560 回答
1

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

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

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

于 2013-05-16T14:29:02.340 回答
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]})
}
于 2013-05-16T14:29:09.683 回答