【问题标题】:Convert 2D JS array to json string将 2D JS 数组转换为 json 字符串
【发布时间】:2022-11-18 22:04:16
【问题描述】:

我的变量数组是:

"1": ["48": '1', "49": '2']
"2": ["51": '3', "52": '4', "53": '5', "54": '6']
"3": ["30": '7']

我在这里提到了二维数组的键和值,我正在尝试将其转换为 JSON 字符串。我尝试了 JSON.stringify(arraydata),arraydata 是存储数组的变量,但它使字符串为空,而数组数据是正确的。

编辑: 这就是我添加数组数据的方式:

var arraydata = new Array();
$('.classselector').each(function(){
    let key1= $(this).data('key1');
    let key2= $(this).data('key2');
    if ( !Array.isArray(arraydata['"'+key1+'"']) ) {
        arraydata['"'+key1+'"'] = new Array();
    }
    arraydata['"'+key1+'"']['"'+key2+'"'] = $(this).val();      
});

【问题讨论】:

  • 这不是一个有效的数组
  • 数组也总是一个对象。因此,您可以定义 formData["1"]["48"]="1" 之类的属性。但是,当您将数组转换为 JSON 字符串时,只有数字索引的元素会出现在结果字符串中。

标签: javascript arrays json multidimensional-array


【解决方案1】:

您问题中引用的“数组”不是有效的 JavaScript 代码。也许您改用对象的对象?在这种情况下,对象可以很容易地转换为 JSON 字符串:

const obj={"1": {"48": '1', "49": '2'},
"2": {"51": '3', "52": '4', "53": '5', "54": '6'},
"3": {"30": '7'}};

console.log(JSON.stringify(obj));

// in case you were really talking about 
// a sparsely populated array of arrays,
// then the solution could look like this:

const arr=[];
arr[1]=[];
arr[1][48]='1';
arr[1][49]='2';
arr[2]=[];
arr[2][51]='3';
arr[2][52]='4';
arr[2][53]='5';
arr[2][54]='6';
arr[3]=[];
arr[3][30]='7';

console.log(arr);
console.log(JSON.stringify(arr));

请参阅我上面的评论。使用对象而不是数组!

您更正后的脚本可能如下所示:

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();      
});

【讨论】:

    猜你喜欢
    • 2013-08-14
    • 2016-03-24
    • 2021-05-27
    • 2017-04-04
    • 2018-02-18
    • 1970-01-01
    • 2012-06-01
    • 2020-04-27
    • 2013-03-14
    相关资源
    最近更新 更多