简体   繁体   English

JSON.stringify(array)返回[]

[英]JSON.stringify(array) returns []

I'm trying to stringify multiple arrays, but unsuccessfully 我正在尝试对多个数组进行字符串化,但未成功

var arr=new Array();
arr['do']='smth';
arr['asd']=[];
arr['asd']['dsa']='alo';
var string=JSON.stringify(arr)
console.log(arr);
console.log(string);

JSON.stringify returns [] JSON.stringify返回[]

If you want to use named keys in javascript, you should use an object as the JSON serializer ignores any named keys in arrays. 如果要在javascript中使用命名键,则应使用一个对象,因为JSON序列化程序将忽略数组中的任何命名键。 A rule of thumb is that you should use arrays for [0] , [1] etc., but objects for ['foo'] , ['bar'] etc. 根据经验, [0][1]等应使用数组,而['foo']['bar']等应使用对象。

var obj = {
    'do': 'smth',
    'asd': {
        'dsa': 'alo'
    }
};

console.log( JSON.stringify(obj) );
//{"do":"smth","asd":{"dsa":"alo"}} 

You're creating an array, and use it as if it was a json object. 您正在创建一个数组,并像使用json对象一样使用它。 You should create an object if you need an object. 如果需要对象,则应创建一个对象。

var obj={};
obj['do']='smth';
obj['asd']=[];
obj['asd']['dsa']='alo';
var string=JSON.stringify(obj)
console.log(obj);
console.log(string);

Use an object: 使用对象:

var object = {};
object['do']='smth';
object['asd']=[];
object['asd']['dsa']='alo';
var string=JSON.stringify(object)
console.log(object);
console.log(string);

You cannot give the elements in an array names, they have their indizes as names. 您不能为数组中的元素指定名称,它们以其indise作为名称。 So if you would like to give them names use an JS-Object otherwise use the indizies in the definition as follows: 因此,如果您想给它们命名,请使用JS-Object,否则请按如下所示使用定义中的标记:

arr[0]='smth';
arr[1]=[];
arr[1][0]='alo';

请记住,JSON代表javascript对象表示法,您应该使对象具有必需的属性,而不是创建数组,因此将数组替换为{}并添加到其中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM