Javascript JSON字符串到多维数组
我似乎在PHP/JS之间前后转换数组时遇到问题。我正在使用一个从JavaScript到PHP页面的XmlHttpRequest,该页面使用json_encode对多维(2D)数组进行编码 在接收字符串时,我使用JSON.parse()对字符串进行解码,但它返回为1D数组。有没有办法将JSON字符串解析为多维数组而不是一维数组 接收到的JSON示例(来自CSV文件): 解析后,如果我尝试使用myArr[0][1]访问它,它将显示为未定义Javascript JSON字符串到多维数组,javascript,json,Javascript,Json,我似乎在PHP/JS之间前后转换数组时遇到问题。我正在使用一个从JavaScript到PHP页面的XmlHttpRequest,该页面使用json_encode对多维(2D)数组进行编码 在接收字符串时,我使用JSON.parse()对字符串进行解码,但它返回为1D数组。有没有办法将JSON字符串解析为多维数组而不是一维数组 接收到的JSON示例(来自CSV文件): 解析后,如果我尝试使用myArr[0][1]访问它,它将显示为未定义 如果这是显而易见的,请原谅我,我对JS和JSON是新手。编辑
如果这是显而易见的,请原谅我,我对JS和JSON是新手。编辑:在编辑显示实际JSON后: 您定义的JSON不是定义二维数组,而是定义一维对象数组。反序列化后,您可以访问(比如)第一本书的标题,如下所示:
alert(myArray[0].title);
(请注意,在该示例中,为了将整个内容放在JavaScript字符串中,我必须对您提供的JSON中的单引号进行转义;不要因此而感到困惑,您的JSON文本在您引用它时是正确有效的,只是我将它放在以单引号分隔的字符串中,因此我必须对其中的单引号进行转义)
原始答案: JavaScript数组始终是一维的,但数组中的每个条目本身都可以是对数组的引用,这有效地实现了二维数组。正确编码后,JSON对这些方面没有问题:
[
[1, 2, 3],
[4, 5, 6]
]
这是一个包含两个条目的数组的JSON符号,每个条目都是一个包含三个条目的数组
使用Crockford的JSON字符串生成器和解析器的示例(以下语法现在也是ECMAScript 5的标准语法,但并非所有浏览器都有):
输出:
a.length = 2
a[0] = 1,2,3
a[1] = 4,5,6
JSON string: [[1,2,3],[4,5,6]]
b.length = 2
b[0] = 1,2,3
b[1] = 4,5,6
a、 长度=2
a[0]=1,2,3
a[1]=4,5,6
JSON字符串:[[1,2,3],[4,5,6]]
b、 长度=2
b[0]=1,2,3
b[1]=4,5,6
你能举一个你收到的JSON的例子吗?既然你已经发布了JSON文本,我已经更新了我的答案,告诉你在反序列化后如何访问其中的数据。我最初的答案是数组,但你所引用的实际上只是一个对象数组。谢谢你的详细帮助。不必再问另一个问题,是否有一种简单的方法将数据从一个对象数组转储到一个数组中,或者我必须循环遍历每个数组并逐块提取数据?
var a, str, b;
a = [
[1, 2, 3],
[4, 5, 6]
];
display("a.length = " + a.length);
display("a[0] = " + a[0].join(","));
display("a[1] = " + a[1].join(","));
str = JSON.stringify(a);
display("JSON string: " + str);
b = JSON.parse(str);
display("b.length = " + b.length);
display("b[0] = " + b[0].join(","));
display("b[1] = " + b[1].join(","));
a.length = 2
a[0] = 1,2,3
a[1] = 4,5,6
JSON string: [[1,2,3],[4,5,6]]
b.length = 2
b[0] = 1,2,3
b[1] = 4,5,6