在jQuery/Javascript中创建要发布到Web服务的JSON字符串

在jQuery/Javascript中创建要发布到Web服务的JSON字符串,javascript,jquery,json,Javascript,Jquery,Json,我有一个html表单、一个按钮和一个点击处理程序来管理表单的提交。问题是关于通过AJAX提交表单的按钮的处理程序 这是我编写的处理程序: JS: 我使用了JSON.stringify($(“#客户_表单”).serializeArray()生成JSON字符串,作为结果获取-如console.log(dataJSON)所示: 哪种方法是获得以下结构的最简单方法: [{"name": "n", "address_line_1": "a1", "address_line_2": "a2", "town

我有一个html表单、一个按钮和一个点击处理程序来管理表单的提交。问题是关于通过AJAX提交表单的按钮的处理程序

这是我编写的处理程序:

JS:

我使用了
JSON.stringify($(“#客户_表单”).serializeArray()
生成JSON字符串,作为结果获取-如
console.log(dataJSON)
所示:

哪种方法是获得以下结构的最简单方法:

[{"name": "n", "address_line_1": "a1", "address_line_2": "a2", "town": "t", "postal_code": "p", "region": "r", "phone_1": "p", "phone_2": "pa", "fax": "f", "email":"e", "web": "w"}]

这样的办法应该行得通

let obj = {}
for (let object in array) {
    obj[object['name']] = object['value']
} 
var arr=[{“name”:“name”,“value”:“n”},{“name”:“address_line_1”,“value”:“a1”},{“name”:“address_line_2”,“value”:“a2”},
{“名称”:“城镇”,“价值”:“t”},{“名称”:“邮政编码”,“价值”:“p”},{“名称”:“地区”,“价值”:“r”},{“名称”:“电话1”,“价值”:“p”},{“名称”:“电话2”,“价值”:“pa”},{“名称”:“传真”,“价值”:“f”},{“名称”:“电子邮件”,“价值”:“e”},{“名称”:“网络”,“价值”:“w”};
var acc={};
//首先,将您的名称和值展平到一个新对象
var newArr=arr.map(项=>{
var newItem={};
newItem[item.name]=item.value;
返回新项目;
});
//第二,我们将newArr中的所有行缩小为平面。。
//…到一个唯一的对象acc
newArr.forEach(项目=>{
Object.keys(item).forEach(key=>acc[key]=item[key]);
});
//现在,您可以为一个独特的对象服务。。
//在新阵列内[acc]
控制台日志([acc])

如果你真的想要,我想你必须自己写。但是您不能将其作为普通表单数据提交吗?在这种情况下,您可以只使用
数据:$(“#客户_表单”).serialize()
,它应该发送等价的内容。取决于服务器接受的内容,但许多框架接受JSON或序列化表单数据。@cale_b serialise()不生成JSON,它生成一个查询字符串,该字符串也不容易转换为JSON。不相等。请看我上面的评论,因为服务器可能会接受这一点。我的后端是Python-nameko框架中的自定义web服务。我希望用JSON处理这些内容,因为服务可能会接收来自其他进程的请求。但是关于序列化和JSON不能“直接”从JS前端生成的信息是非常有用的。好吧,学究,它可以自动生成,只是不在您想要的结构中,仅此而已。当然,也可以编写自己的例程来生成您喜欢的输出。纯代码答案没有那么有用,您可以在代码中添加解释/注释来解释您正在做什么吗?还值得一提的是,let仅适用于ES6,并且可能想要/需要使用
var
,以便与IE10和其他一些浏览器兼容。@cale_b我认为没有必要解释诸如let用法之类明显的事情。我完全不知道
let
var
的区别。我认为在JS
var
中定义了一个变量。我想我应该在这个上下文中使用
let
,因为这个变量只打算在这个上下文/块中使用。这很有用,但我发现尼古拉的答案更容易理解和阅读。
[{"name": "n", "address_line_1": "a1", "address_line_2": "a2", "town": "t", "postal_code": "p", "region": "r", "phone_1": "p", "phone_2": "pa", "fax": "f", "email":"e", "web": "w"}]
let obj = {}
for (let object in array) {
    obj[object['name']] = object['value']
}