如何在 javascript 中将表单转换为 Json 数组

How to convert a form to a Json array in javascript

我正在尝试将表单结果转换为以下格式。

{
  "project": {
    "id": 5,
    "name": "max",
    "identifier": "max_project",
    "description": "This is description",
  }
}

但是结果是这样的,

{name: "max", identifier: "max_project", description: "This is description"}

请帮助我更正代码以获得预期的结果。我正在尝试 post jsonp 格式的结果。

$("#submit").on('click', function() {
  var data = {};

  $("#form").serializeArray().map(function(x) {
    data[x.name] = x.value;
  });
  console.log(data);
})
<form id="form" action="submit" method="post">
  Name:
  <input type="text" name="name">
  <br>identifier:
  <input type="text" name="identifier">
  <br>description:
  <textarea type="text" name="description"></textarea>
  <br>
  <input id="submit" type="button" name="submit" value="submit">
</form>

实现结果的最简单解决方案如下

$("#submit").on('click', function() {
  var data = {project:{}};

  $("#form").serializeArray().map(function(x) {
    data["project"][x.name] = x.value;
  });
  console.log(data);
})

或者你这样做的方式但是把它放在另一个散列中

$("#submit").on('click', function() {
  var project = {};

  $("#form").serializeArray().map(function(x) {
    project[x.name] = x.value;
  });
  var data = {project: project}
  console.log(data);
})

有很多方法可以达到相同的结果

在JavaScript中,你有数组和对象, 数组和对象之间的区别在于它们的索引, 数组只接受整数索引,对象接受字符串。

这样一来,你就得不到你想要的东西了。

问题是为什么?!你为什么要那种格式?