我有这样的序列化数组
rate_3=26&rate_8=67&rate_12=98
等..,
现在我需要将此数组更改为json类型
{
"ID": "3",
"Rate": "26"
},
{
"ID": "8",
"Rate": "67"
},
{
"ID": "3",
"Rate": "26"
} ..,
etc
所以我尝试了这样但它不起作用...请有人帮助我。
var o = {};
var a = table.$('input, select').serialize();
$.each(a, function()
{
if (o[this.name] !== undefined)
{
if (!o[this.name].push)
{
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
}
else
{
o[this.name] = this.value || '';
}
});
return o;
我正在使用数据表,所以我只需要为使用此行的数据获取Datatables序列化数组
var a = table.$('input, select').serialize();
即使我也尝试过json2.js,但是当我使用json2.js时强迫页面提交
var data_2 = JSON.stringify(block_form.serializeArray());
答案 0 :(得分:2)
简单方法是map
对正则表达式匹配的结果,将新对象推送到结果数组中:
var out = str.match(/\d+=\d+/g).map(function (el) {
var arr = el.split('=');
return { id: arr[0], rate: arr[1] };
});
使用JSON.stringify(out)
将输出数组转换为JSON。
答案 1 :(得分:1)
如果您的数据格式可靠地采用rate_N=X&
格式,则可以使用简单的字符串拆分来解析值。这似乎与查询字符串的格式类似,如果是这种情况,您不应该遇到(m)任何不寻常的实体。
首先,您需要将每个键值对分开(在&
上)。然后在=
上拆分每一对以生成密钥和值。你需要从密钥中解析出来的ID(从前面切掉rate_
),哪个substr适合。
var data = "rate_3=26&rate_8=67&rate_12=98";
var pairs = data.split('&').reduce(function(collect, pair) {
var kv = pair.split('=');
var name = kv[0].substr(kv[0].indexOf('_') + 1);
collect.push({
id: name,
rate: kv[1]
});
return collect;
}, []);
document.getElementById('results').textContent = JSON.stringify(pairs);
<pre id="results"></pre>
答案 2 :(得分:0)
var str = 'rate_3=26&rate_8=67&rate_12=98'
var arr = str.split('&').map(function(element) {
return element.replace(/^rate_/, '');
}).map(function(element) {
var elements = element.split('=');
return {
"ID" : elements[0],
"Rate" : elements[1]
};
});
console.log(arr);