将javascript对象转换为html表单兼容查询

将javascript对象转换为html表单兼容查询,javascript,forms,node.js,Javascript,Forms,Node.js,我有一个如下形式的javascript对象: var order = { "id": 13, "name": "Sebastian", "items": [ { "id": 5 } ] ... } 我需要把它做成这样的格式: order[id] = 13 order[name] = "Sebastian" order[items][0][id] = 5 在Javascript中实现这一点的最佳方法是什么?是否有任何预构建的功能 我正在使用下划线

我有一个如下形式的javascript对象:

var order = {
  "id": 13,
  "name": "Sebastian",
  "items": [
    {
      "id": 5
    }
  ]
  ...
}
我需要把它做成这样的格式:

order[id] = 13
order[name] = "Sebastian"
order[items][0][id] = 5
在Javascript中实现这一点的最佳方法是什么?是否有任何预构建的功能


我正在使用下划线和jquery的nodeJS。

可能有一个现成的函数,但这个(快速生成的)函数也应该可以工作:

function convert(key, obj) {
  var collector = {};

  function recurse(key, obj) {
    var property, name;
    if( typeof obj === "object" ) {
      for( property in obj ) {
        if( obj.hasOwnProperty(property) ) {
          name = key + "[" + property + "]";
          recurse(name, obj[property]);
        }
      }
    } else {
      collector[key] = String(obj);
    }
  }

  recurse(key, obj);
  return collector;
}
给它一个起始键和对象,你会得到一个带有全名和值的“平面”对象:

var order = {
  "id": 13,
  "name": "Sebastian",
  "items": [
    {
      "id": 5
    }
  ]
};

var flattened = convert("order", order);

// `flattened` is now:
// {
//   'order[id]': 13,
//   'order[name]': 'Sebastian',
//   'order[items][0][id]': 5
// }

这个怎么样-明白了。。。哪里您已经可以使用
order['name']
order['items'][0]['id']
访问这些属性(请注意“”)。正如@alessioalex上面所说,您可以通过简单地执行
order['id']
order['name']
等操作,以那种方式访问
order
。您不需要做任何额外的工作就可以获得这种“格式”.@Alessio我想把这个对象变成实际的字符串。我需要这个用于npm模块restler,它以这种方式发送参数: