如何在jQuery中构造包含动态数组值的JSON消息
核心修改点
- 提前给
line对象初始化images为空数组,才能调用push方法追加元素 - 遍历完成后直接把
line对象赋值给根JSON对象的line属性即可
修正后完整代码
// 初始化根JSON对象 const jsonObj = {}; // 初始化line对象,提前创建images空数组 const line = { name: $("#name").val(), images: [] }; let counter = 1; $("div.carousel_image > img").each(function() { const image = {}; // 若需要order为字符串格式,可转成String类型和目标结构对齐 image.order = String(counter); // 提取文件名作为图片name,和目标结构对应 image.name = $(this).attr('src').split('/').pop(); // 补充目标结构要求的link字段,存完整图片地址 image.link = $(this).attr('src'); line.images.push(image); counter++; }); // 把组装好的line对象挂载到根JSON对象上 jsonObj.line = line; // 如果需要输出JSON字符串,调用JSON.stringify即可 const finalJsonStr = JSON.stringify(jsonObj);
简化修改说明
如果不需要调整字段提取逻辑,只需要保留你原有字段设置,只要加images数组初始化和最后挂载line的两步即可,核心错误就是未提前初始化数组导致push方法调用失败。
内容的提问来源于stack exchange,提问作者Raphael
相关产品推荐
相关产品推荐

