首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery序列化数组到jscript

JQuery序列化数组到jscript
EN

Stack Overflow用户
提问于 2015-08-12 11:17:03
回答 2查看 1K关注 0票数 0

我在网上找到了以下代码。我很乐意在我自己的项目中使用它。

http://dbushell.github.io/Nestable/

这个可拖放的jquery生成的树结构生成一个序列化数组。对于我来说,这是一个序列化的javascript数组。

代码语言:javascript
运行
复制
[{"id":1,"children":[{"id":3}]},{"id":2,"children":[{"id":4},{"id":9,"children":[{"id":5,"children":[{"id":6},{"id":7},{"id":8}]}]}]},{"id":11},{"id":12,"children":[{"id":10}]}]

对于我所能找到的,我应该使用parse_str,这样就可以了。

但没有结果。生成的数组为空。

我尝试了以下测试代码:

代码语言:javascript
运行
复制
   <?php

    $Str = '[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';

    parse_str($Str, $values);

    print_r($values);

    ?>

我希望任何人都能看到我忽略的东西。

提前感谢!

回答! 我忽略了的是,这不是Javascript序列化数组,而是JSON编码的字符串。 如下所示,我应该使用JSON解码。 $Str =json_decode({“id”:1},{"id":2,“子代”:[{“id”:3},{"id":4},{"id":5,“子”:{“id”:6},{"id":7},{"id":8}},{"id":9},{“id”:10}},{"id":11},{“id”:12}]; 这将提供如下所示的结果。 如果我想将结果用作数组而不是提供什么,我应该使用以下函数将对象转换为有效的数组: 函数toArray ($obj ){ if (is_object( $obj )) $obj=(数组) $obj;if (is_array($obj)) { $new = array();foreach ($obj as $key => $val) { $new$key = toArray($val); (*这是我复制的:如何将对象转换为数组? *)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-12 11:18:51

不,你应该像这样使用解码器()

代码语言:javascript
运行
复制
<?php

    $Str = '[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';

    $php_array = json_decode($Str);

    // and just in case there is an error while decoding
    if ( json_last_error() > 0 ) {
        echo json_last_error_msg();
    }

    print_r($php_array);

?>

它将生成输出:

代码语言:javascript
运行
复制
Array
(
    [0] => stdClass Object
        (
            [id] => 1
        )

    [1] => stdClass Object
        (
            [id] => 2
            [children] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 3
                        )

                    [1] => stdClass Object
                        (
                            [id] => 4
                        )

                    [2] => stdClass Object
                        (
                            [id] => 5
                            [children] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [id] => 6
                                        )

                                    [1] => stdClass Object
                                        (
                                            [id] => 7
                                        )

                                    [2] => stdClass Object
                                        (
                                            [id] => 8
                                        )

                                )

                        )

                    [3] => stdClass Object
                        (
                            [id] => 9
                        )

                    [4] => stdClass Object
                        (
                            [id] => 10
                        )

                )

        )

    [2] => stdClass Object
        (
            [id] => 11
        )

    [3] => stdClass Object
        (
            [id] => 12
        )

)

或者,如果希望整个数据集作为数组返回,而不是原始数据中存在的对象,则可以将第二个参数添加到json_decode($Str, true)中,并且所有参数都在数组中:

代码语言:javascript
运行
复制
<?php

    $Str = '[{"id":1},{"id":2,"children":[{"id":3},{"id":4},{"id":5,"children":[{"id":6},{"id":7},{"id":8}]},{"id":9},{"id":10}]},{"id":11},{"id":12}]';

    $php_array = json_decode($Str, true);

    // and just in case there is an error while decoding
    if ( json_last_error() > 0 ) {
        echo json_last_error_msg();
    }

    print_r($php_array);

?>

给出这一结果:

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [id] => 1
        )

    [1] => Array
        (
            [id] => 2
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                        )

                    [1] => Array
                        (
                            [id] => 4
                        )

                    [2] => Array
                        (
                            [id] => 5
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 6
                                        )

                                    [1] => Array
                                        (
                                            [id] => 7
                                        )

                                    [2] => Array
                                        (
                                            [id] => 8
                                        )

                                )

                        )

                    [3] => Array
                        (
                            [id] => 9
                        )

                    [4] => Array
                        (
                            [id] => 10
                        )

                )

        )

    [2] => Array
        (
            [id] => 11
        )

    [3] => Array
        (
            [id] => 12
        )

)
票数 1
EN

Stack Overflow用户

发布于 2015-08-12 11:19:50

只需使用json_decode

代码语言:javascript
运行
复制
print_r(json_decode($Str, true));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31963647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档