Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript stringify(数组)返回[]_Javascript_Json - Fatal编程技术网

Javascript stringify(数组)返回[]

Javascript stringify(数组)返回[],javascript,json,Javascript,Json,我正在尝试对多个数组进行字符串化,但没有成功 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返回[]如果要在javascript中使用命名键,应使用,因为JSON序列化程序会忽略数组中的任何命名键。经验法则是,应该为[

我正在尝试对多个数组进行字符串化,但没有成功

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
返回[]

如果要在javascript中使用命名键,应使用,因为JSON序列化程序会忽略数组中的任何命名键。经验法则是,应该为
[0]
[1]
等使用数组,但为
['foo']
['bar']
等使用对象

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

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

如果希望在javascript中使用命名键,则应使用,因为JSON序列化程序会忽略数组中的任何命名键。经验法则是,应该为
[0]
[1]
等使用数组,但为
['foo']
['bar']
等使用对象

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

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

您正在创建一个数组,并将其当作json对象使用。如果需要对象,则应创建对象

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

您正在创建一个数组,并将其当作json对象使用。如果需要对象,则应创建对象

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

不能为数组中的元素指定名称,它们将其独立项作为名称。因此,如果您想给它们命名,请使用JS对象,否则请使用定义中的indizies,如下所示:

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

不能为数组中的元素指定名称,它们将其独立项作为名称。因此,如果您想给它们命名,请使用JS对象,否则请使用定义中的indizies,如下所示:

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

记住,JSON代表javascript对象表示法,您应该拥有具有所需属性的对象,而不是您正在创建一个数组,因此将数组替换为{},并添加到此

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

使用对象:

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

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

你是说数组中不存在命名键吗?这些键确实存在,但JSON序列化程序会忽略它们。@Pointy你说得对-我稍微更改了我的描述。Chrome自己的控制台似乎甚至不能正确输出变量(运行OP的代码类型
arr
,您什么也得不到,但是
console.log(arr)
可以。)您的意思是数组中不存在命名键吗?这些键确实存在,但JSON序列化程序忽略了它们。@Pointy您是对的-我稍微更改了我的描述。Chrome自己的控制台似乎甚至不能正确地输出变量(运行OP的代码类型
arr
,您什么也得不到,但是
console.log(arr)
可以)你只是建议他给一个对象命名,让他更加困惑。你只是建议他给一个对象命名,让他更加困惑。