JSON索引数组到javascript索引数组

时间:2013-06-07 09:38:24

标签: javascript json

我有一个php文件,它回应了以下JSON编码的索引数组。

PHP信息

php页面有以下标题

header("Content-Type: application/json");

php回应了以下json索引数组

 [
        [
            [17, 28, 1, "z"],
            [28, 31, 6, "b"],
            [8, 29, 6, "b"]
        ],
        [
            [19, 28, 1, "z"],
            [17, 25, 6, "b"],
            [19, 25, 6, "b"],
            [27, 32, 6, "b"],
            [9, 28, 6, "b"]
        ]
    ]

我一直在拉我的头发使用jquery将其重现为索引的javascript数组,我更喜欢使用POST,因为将来可能会传递大量数据。我遇到的所有例子都是关联数组的小用途和/或立即输出。

JAVASCRIPT尝试

$.post('matchEngine.php', 
    function(data){
        var info = data; 
        document.write(info);
        }
    ); 

// output = 17,28,1,“z”,28,31,6,“b”,8,29,6,“b”等等一长串csv值!

$.post('matchEngine.php', 
        function(data){
        var info = $.parseJSON(data); 
        document.write(info);
        }
        ); 

//没有输出

期望的结果

var info=  [[[17, 28, 1, "z"],[28, 31, 6, "b"],[8, 29, 6, "b"]],[[19, 28, 1, "z"],[17, 25, 6, "b"],[19, 25, 6, "b"],[27, 32, 6, "b"],[9, 28, 6, "b"]]]

1 个答案:

答案 0 :(得分:3)

第一个代码的输出完全符合预期。

如果将数组转换为字符串,它将以逗号分隔的每个项目的字符串表示形式列表。由于这些项是数组,因此它们也将转换为逗号分隔的字符串。

因此,输出中的17, 28, 1, "z"是第一个内部数组的字符串表示形式,后跟逗号,下一个数组的字符串表示形式,依此类推。由于每个级别都以逗号分隔,因此您无法通过查看输出来区分嵌套数组和平面数组。

在第二个代码中,您尝试解析已解析的数据。这会隐式地将数组转换为字符串表示形式,因为它不是有效的JSON,所以你不会得到任何回报。

要访问数据,只需使用括号访问数组中的项目。例如,data[0]将返回数组[[17, 28, 1, "z"],[28, 31, 6, "b"],[8, 29, 6, "b"]]data[0][0]将返回数组[17, 28, 1, "z"],而data[0][0][3]将返回值"z"