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

将二维JS数组转为JSON字符串时出现空字符串问题求助

问题解决:JSON.stringify返回空字符串的原因及修复方案

你遇到的核心问题是误用JavaScript数组存储键值对。数组在JS里只处理数字索引,你用字符串作为索引(比如"1"、"48")其实是给数组对象添加了额外属性,这些属性不会被JSON.stringify序列化,所以最终得到空字符串。

你的代码问题点

  1. 用new Array()初始化arraydata,但你实际需要的是键值对结构,数组不适合这种场景
  2. 给数组键名手动加引号(arraydata['"'+key1+'"'])完全多余,徒增复杂度
  3. 内层同样用数组存储字符串键值,重复了第一个错误

修复后的代码

var arraydata = {}; // 替换数组为普通对象
$('.classselector').each(function(){
    let key1 = $(this).data('key1');
    let key2 = $(this).data('key2');
    // 初始化内层对象(如果不存在)
    if (!arraydata[key1]) {
        arraydata[key1] = {};
    }
    arraydata[key1][key2] = $(this).val();      
});

修复说明

  • 外层用普通对象{}替代数组,对象支持任意字符串键,会被JSON.stringify正常序列化
  • 内层也用对象存储key2对应的数值,符合你需要的键值对结构
  • 去掉了多余的引号包裹,直接使用key1、key2作为键名,代码更简洁

现在调用JSON.stringify(arraydata)会得到正确的JSON结果:

{
  "1": {"48": "1", "49": "2"},
  "2": {"51": "3", "52": "4", "53": "5", "54": "6"},
  "3": {"30": "7"}
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:45:40