首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从嵌套集模型结构为Fancytree创建JSON

从嵌套集模型结构为Fancytree创建JSON
EN

Stack Overflow用户
提问于 2014-11-29 10:14:39
回答 1查看 2.6K关注 0票数 2

我想用jquery插件Fancytree显示一个数据结构。在Google中进行长时间搜索之后,将数据结构存储在数据库中的最佳方法似乎是嵌套的Set模型(在这里的Stackoverflow中描述)。然而,要显示这种结构的相关嵌套JSON是相当困难的,我无法做到。

这包括转换以下MySQL表:

( category_id )\x{e76f}\x{e76f}=

\x{e76f}\x{e76f}电子产品1,000,000

\x{e76f}\x{e76f}2电视

\x{e76f}\x{e76f}管状

\x{e76f}5-等离子体-7-8-2

\x{e76f}\x{e76f}6-便携式电子产品- 10 - 19 -1

\x{e76f}\x{e76f} MP3球员

#^#^#^=#^#^#.

\x{e76f}\x{e76f} CD播放机

\x{e76f}\x{e76f}2双向无线电台

到这个JSON中:

代码语言:javascript
复制
[{"key": "1", "title": "ELECTRONICS", "expanded": true, "children": [
    {"key": "2", "title": "TELEVISION", "expanded": true, "children": [
        {"key": "3", "title": "TUBE"},
        {"key": "4", "title": "LCD"},
        {"key": "5", "title": "PLASMA"}
    ]},
    {"key": "6", "title": "PORTABLE ELECTRONICS", "expanded": true, "children": [
        {"key": "7", "title": "MP3 PLAYERS", "expanded": true, "children": [{"key": "8", "title": "FLASH"}]},
        {"key": "9", "title": "CD PLAYERS"},
        {"key": "10", "title": "2 WAY RADIOS"}
    ]}
]}]

我想知道它是否存在将MySQL数据转换为分层嵌套JSON的简单方法?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-30 07:38:23

最后,通过一点一点地使JSON工作,我设法使我的树工作起来。我不认为它是适当的,因为它不是由对象和数组组成的,但这似乎很好。

代码语言:javascript
复制
 <?php 
    if (!isset($DB_connection)) { require_once('../config/_db_connect.php'); } 
    $result = $DB_connection->prepare("SELECT node.category_id, node.name, 
     (COUNT(parent.name) - 1) AS depth FROM nested_category AS node,
      nested_category AS parent WHERE node.lft BETWEEN parent.lft 
      AND parent.rgt GROUP BY node.name ORDER BY node.lft;"); 
    $result->execute(); 

    $i = 0;
    $nb_open = 0;
    $current_level = '';

    echo "[{";
    while( $line = $result->fetch(PDO::FETCH_OBJ) )
    {                       
        if ($current_level == '') { $current_level = $line->depth; } 

        if ($current_level == $line->depth) { if ($i > 0) { echo " }, {"; } }
        elseif ($current_level < $line->depth) {
            echo ',  "children": [ { ';
            $nb_open = $nb_open + 1;
        }
        elseif ($current_level > $line->depth) {
            $nb_to_close = $current_level - $line->depth;
            for ($j = 1; $j <= $nb_to_close; $j++) {
                $nb_open = $nb_open - 1;
                echo " }]";
            }
            echo "}, {";
        }

        echo ' "title": "' . $line->name . '", "key": "' .
              $line->category_id . '", "expanded": true';
        $current_level = $line->depth;
        $i++;
    }

    if ($nb_open>0) { for ($i = 1; $i <= $nb_open; $i++) { echo "}]"; } }
    echo "}]";
    ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27201129

复制
相关文章

相似问题

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