Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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 如何将数组手工编码为JSON字符串?_Javascript_Json_Multidimensional Array - Fatal编程技术网

Javascript 如何将数组手工编码为JSON字符串?

Javascript 如何将数组手工编码为JSON字符串?,javascript,json,multidimensional-array,Javascript,Json,Multidimensional Array,我需要编写一个JSON字符串,该字符串将被解释为一个数组,但只有某些索引实际具有任何值 我想要一个如下所示的数组: array[1] = ["foo", "bar"] array[5] = ["things", "stuff"] array[37] = ["etc"]; 因此,要返回内容,我可以调用数组[5][1] 问题是并不是所有的东西都有值,我是手工写这个字符串的,所以我不想从0开始,然后做所有的空值。有没有一种简单的方法可以做到这一点?数据结构的JSON表示 var data = {"1

我需要编写一个JSON字符串,该字符串将被解释为一个数组,但只有某些索引实际具有任何值

我想要一个如下所示的数组:

array[1] = ["foo", "bar"]
array[5] = ["things", "stuff"]
array[37] = ["etc"];
因此,要返回内容,我可以调用数组[5][1]


问题是并不是所有的东西都有值,我是手工写这个字符串的,所以我不想从0开始,然后做所有的空值。有没有一种简单的方法可以做到这一点?

数据结构的JSON表示

var data = {"1":{"0":"foo","1":"bar"},"5":{"0":"things","1":"stuff"},"37":{"0":"etc"}};
或者只是

var data = {"1":["foo","bar"],"5":["things","stuff"],"37":["etc"]};

数据结构的JSON表示

var data = {"1":{"0":"foo","1":"bar"},"5":{"0":"things","1":"stuff"},"37":{"0":"etc"}};
或者只是

var data = {"1":["foo","bar"],"5":["things","stuff"],"37":["etc"]};

如果JSON字符串实际上是指对象文字,那么这个答案将是无用的。如果您实际上指的是JSON字符串,那么您所需要做的就是创建一个可以由JSON.parse解析的字符串,该字符串具有稀疏数组的所有特征,并将子数组放置在您需要它们的位置,无论您首先以何种方式创建字符串。看看这个例子:

var array, 
    json = '[ null, ["foo", "bar"], null, null, null, ["things", "stuff"], ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, ["etc"]  ]';


array = JSON.parse( json );

console.log(
    array[ 1 ][ 1 ] // "bar"
);

console.log(
    array[ 5 ][ 1 ] // "stuff"
);

console.log(
    array[ 37 ][ 0 ] // "etc"
);
另见:

编辑。最后请注意,考虑到您的语句,关键是并非所有内容都有值,我正在手动编写此字符串,因此我不想从0开始,然后执行所有空值。有没有一个简单的方法可以做到这一点

答案是:不,你不能既有蛋糕又吃

如果您有办法先用代码创建数组,那么您可以轻松地执行以下操作:

var array = [];

array[1] = ["foo", "bar"];
array[5] = ["things", "stuff"];
array[37] = ["etc"];

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

另请参见:

如果您所说的JSON字符串实际上是指对象文字,那么这个答案将毫无用处。如果您实际上指的是JSON字符串,那么您所需要做的就是创建一个可以由JSON.parse解析的字符串,该字符串具有稀疏数组的所有特征,并将子数组放置在您需要它们的位置,无论您首先以何种方式创建字符串。看看这个例子:

var array, 
    json = '[ null, ["foo", "bar"], null, null, null, ["things", "stuff"], ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, null, null, null, null, null, null, null, null, null, ' + 
            'null, ["etc"]  ]';


array = JSON.parse( json );

console.log(
    array[ 1 ][ 1 ] // "bar"
);

console.log(
    array[ 5 ][ 1 ] // "stuff"
);

console.log(
    array[ 37 ][ 0 ] // "etc"
);
另见:

编辑。最后请注意,考虑到您的语句,关键是并非所有内容都有值,我正在手动编写此字符串,因此我不想从0开始,然后执行所有空值。有没有一个简单的方法可以做到这一点

答案是:不,你不能既有蛋糕又吃

如果您有办法先用代码创建数组,那么您可以轻松地执行以下操作:

var array = [];

array[1] = ["foo", "bar"];
array[5] = ["things", "stuff"];
array[37] = ["etc"];

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

另请参见:

如果您不想从0进行sart,那么数组[5][1]应该返回示例中的内容,对吗?我认为这不能通过使用纯json对象来实现。可能是重复的谢谢,kingjiv,我不知道术语稀疏数组,所以我很难找到相关的结果。Martin,数组的最高级别是我唯一关心的级别。如果您不想从0进行sart,那么数组[5][1]应该在您的示例中返回内容,对吗?我认为这不能通过使用纯json对象来实现。可能是重复的谢谢,kingjiv,我不知道术语稀疏数组,所以我很难找到相关的结果。Martin,数组的最高级别是我唯一关心的。tho,他需要数字索引,所以可能var data={1:[foo,bar],5:[things,stuff],37:[etc]};javascript对象的键是字符串。自己检查一下:a={1:'numeric',1:'string'};alerta[1];他想要数字指数,所以可能var数据={1:[foo,bar],5:[things,stuff],37:[etc]};javascript对象的键是字符串。自己检查一下:a={1:'numeric',1:'string'};alerta[1];为了模拟真实的js响应,您可能应该将null更改为undefinedWhy在可以显式定义键时首先将所有空键定义为null或undefined:var json='{1:[foo,bar],5:[things,stuff],37:[etc]}'@65Fbef05,因为OP没有请求将被解释为对象的JSON字符串。。。我需要编写一个JSON字符串,它将被解释为一个数组。空孔和/或未定义的孔用于模拟稀疏阵列。另请参见:数组是Javascript中的对象。JSON.parse返回一个对象。@gion_13请看我刚刚添加的实例。为了模拟真实的js响应,您可能应该将空值更改为未定义。当您可以显式定义键时,首先将所有空键定义为null或未定义:var JSON='{1:[foo,bar],5:[things,stuff],37:[etc]}@65Fbef05,因为OP没有请求将被解释为对象的JSON字符串。。。我需要编写一个JSON字符串,它将被解释为一个数组。空孔和/或未定义的孔用于模拟稀疏阵列。另请参见:数组是Javascript中的对象。JSON.parse返回一个对象。@gion_13请看我刚刚添加的实例。