JSON索引数组到javascript索引数组

JSON indexed arrays to javascript indexed arrays

本文关键字:索引 数组 javascript JSON      更新时间:2023-09-26

我有一个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"]]]

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

如果将数组转换为字符串,它将生成一个逗号分隔的字符串列表,其中包含每一项的字符串表示形式。由于条目是数组,它们也将被转换为逗号分隔的字符串。

因此,输出中的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"