You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多选Bootstrap-select生成指定结构JSON数组异常求助

解决多选Bootstrap-select生成JSON数组格式不符的问题

问题回顾

你期望生成的JSON数组格式是:

[ { "title": "Name" }, { "title": "Phone" }, { "title": "Parent Phone" }, { "title": "Street" } ]

但实际得到的却是:

[{"title":["Arabic Name","Phone","Building","Nationality"]}]

问题原因

问题出在你遍历的对象上:$("#db_fields")选中的是整个select组件,而非选中的选项。对于多选select,调用$(this).val()会直接返回所有选中值的数组,所以你最终只往数组里push了一个包含数组的对象,而非多个独立的{title: ...}对象。

修正方案

你需要遍历的是选中的option元素,而非整个select。修改代码如下:

方法1:使用$.each遍历选中选项

var favorite = new Array();
// 目标改为选中的option,而非select本身
$.each($("#db_fields option:selected"), function() {
    var field = { 'title': $(this).val() };
    favorite.push(field);
});
var myJsonString = JSON.stringify(favorite);
alert(myJsonString);

方法2:更简洁的map写法

// 用map直接生成目标数组,再转JSON
var favorite = $("#db_fields option:selected").map(function() {
    return { title: $(this).val() };
}).get();
var myJsonString = JSON.stringify(favorite);
alert(myJsonString);

原理说明

$("#db_fields option:selected")会获取所有被选中的<option>元素,遍历每个元素时,$(this).val()就是单个选项的value值。这样每次循环都会生成一个独立的{title: 选项值}对象,最终数组的结构就和你预期的一致了。

内容的提问来源于stack exchange,提问作者Mohamed Fradi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:59:05