Javascript 将表单数据转换为JSON字符串

Javascript 将表单数据转换为JSON字符串,javascript,jquery,json,Javascript,Jquery,Json,如果我使用JSON.serialize($(form)).serializeArray() 我得到[{“name”:“login”,“value”:“a value”},{“name”:“email”,“value”:“a email”}]而我需要{“login”:“a login”,“email”:“a email”}。怎么做 利用.serializeArray()的真正快速解决方案是: <form name = 'test' > <input type='text'

如果我使用
JSON.serialize($(form)).serializeArray()

我得到
[{“name”:“login”,“value”:“a value”},{“name”:“email”,“value”:“a email”}]
而我需要
{“login”:“a login”,“email”:“a email”}
。怎么做

利用.serializeArray()的真正快速解决方案是:

<form name = 'test' >
    <input type='text' name = 'login'>
    <input type='email' name = 'email'>
</form>
你可以用这个:

var objArr = JSON.serialize($(form)).serializeArray();
var obj = objArr.pop();
var strJson = JSON.serialize(obj);
您可以将
传递到
FormData()
,迭代
FormData
实例的键、值对,将每个键和值设置为对象属性和值

let form=document.forms[“test”];
设fd=新表单数据(表单);
让数据={};
用于(让fd的[键,道具]){
数据[键]=道具;
}
data=JSON.stringify(数据,null,2);
控制台日志(数据)

如果需要javascript对象:

JSON.stringify($(form).serializeArray().reduce((acc, f) => {
  acc[f.name] = f.value
  return acc
}, {})
而Json:

 let dest = {};
 $( form )
     .serializeArray()
     .map( input => dest[ input.name ] = input.value );
如果你得到这个

[{“name”:“login”,“value”:“a value”},{“name”:“email”,“value”:“a email”}]

你只需要

 console.log( JSON.stringify( dest ) );
只需通过索引调用变量

var data=[{“name”:“login”,“value”:“a value”},{“name”:“email”,“value”:“a email”}];

console.log(数据[0])
另一种方法,使用普通js和
form.elements
作为
数组的参数。reduce

vard=[].reduce.call(document.forms['test'].elements,(a,b)=>(a[b.name]=b.value,a),{});
var j=JSON.stringify(d,0,4);
控制台日志(j)


如果您放弃对.serializeArray()的调用该怎么办?用例是什么,通常您需要
www-url-encoded
格式的数据,那么
JSON.serialize
从何而来?JSON.stringify
中的
null
2
参数的含义是什么,我将在调试时更经常地使用它,ty
null
用于替换过滤器,而
2
用于标识。@guest271314谢谢
[{“login”:“},{“email”:“}]
您需要合并这些对象以获得答案:pNice one!:)。第一个示例错误地定义了
d
,但需要
数据
(但字符差异不足,无法编辑)。否则,这种方法效果很好。
{"name":"login","value":"a value"}