Если под «строкой 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"
);
Смотри также: http://jsfiddle.net/rwaldron/DWCEb/
Редактировать. В качестве заключительного замечания, учитывая ваше утверждение: «Подвох в том, что не все будут иметь значения, и я пишу эту строку вручную, поэтому я не хочу начинать с 0 и сделать все пустые значения. Есть ли простой способ сделать это? "
Ответ: Нет. Вы не можете есть и свой пирог.
Если у вас есть возможность сначала создать массив с кодом, то вы можете легко сделать:
var array = [];
array[1] = ["foo", "bar"];
array[5] = ["things", "stuff"];
array[37] = ["etc"];
console.log(
JSON.stringify( array )
);
Смотри также: http://jsfiddle.net/rwaldron/RJHEp/