从嵌套集生成 JSON(perl、sql、jquery)

2024-01-25

我在数据库中有内容页面(使用嵌套集),我需要通过 jQuery jsTree 插件显示它。需要返回带有如下数据的 JSON:

[
    {
        data: 'node1Title',
        children: [
            {
                data: 'subNode1Title',
                children: [...]
            },
            {
                data: 'subNode2Title',
                children: [...]
            }
        ]
    },
    {
        data: 'node2Title',
        children: [...]
    }
]

我需要什么才能做到这一点?

我可以将哈希数组转换为 JSON,但我不明白如何生成数组。

样本数据:

**'pages'table**
id  parent_id   level   lkey    rkey    name
1   0       1   1   14  index
2   1       2   2   7   info
3   1       2   8   13  test
4   2       3   3   4   about
5   2       3   5   6   help
6   3       3   9   10  test1
7   3       3   11  12  test2

我需要得到:

[
    {
        data: 'index',
        children: [
            {
                data: 'info',
                children: [
                    {
                        data: 'about'
                    },
                    {
                        data: 'help',
                    }
                ]
            },
            {
                data: 'test',
                children: [
                    {
                        data: 'test1'
                    },
                    {
                        data: 'test2'
                    }
                ]
            }
        ]
    }
]

我遇到了完全相同的问题,这是我在 Perl 中编写的内容,用于将嵌套集树转换为 jsTree 插件的 JSON 对象(我使用 DBIx::Tree::NestedSet 来访问 MySQL 数据库树)。我知道从 Perl 的角度来看我的代码很丑陋,但它对我有用。

sub get_json_tree {
    my $json = '[';
    my $first = 1;
    my $last_level = 1;
    my $level = 1;
    my $tree = DBIx::Tree::NestedSet->new(dbh => $dbh);
    my $ancestors = $tree->get_self_and_children_flat(id => $tree->get_root);
    foreach (@{$ancestors}) {
        my $name = $_->{'name'};
        $last_level = $level;
        $level = $_->{'level'};
        if ($level > $last_level) {
            $json .= ',' if ($json =~ /}$/);
        } elsif ($level < $last_level) {
            $json .= ']}';
            for (my $i = 0; $i < $last_level - $level; $i++) {
                $json .= ']}';
            }
            $json .= ',';
        } elsif ($level == $last_level && !$first) {
            $json .= ']},';
        }
        $json .= '{"attr":{"id":'.$_->{'id'}.',"rel":"folder"},"data":"'.$name.'","children":[';
        $first = 0;
    }
    $json .= ']}';
    for (my $i = 1; $i < $level; $i++) {
        $json .= ']}';
    }    
    $json .= ']';
    return $json;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从嵌套集生成 JSON(perl、sql、jquery) 的相关文章

  • 如何通过填充 NSDictionary 以 JSON 格式发送 UIImage

    我正在尝试使用 JSON 将数据发送到服务器 我可以使用我的对象和关键参数创建 NSDictionary 但我想发送我的图片 图片是UIImage NSDictionary mainJSON NSDictionary dictionaryW
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 不带 GROUP BY 的聚合查询

    这个查询似乎在我的旧机器上完美运行 但是 在我的 MySQL 5 7 14 和 PHP 5 6 25 的新机器上 它会抛出错误 致命错误 未捕获异常 PDOException 并带有消息 SQLSTATE 42000 语法错误或访问冲突 1
  • SQL Server 2008R2 和创建 XML 文档

    论坛上的第一篇文章 因为我真的被这个问题困住了 以下查询正确地将有效的 XML 文档分配给 xTempXML 变量 类型为 xml 注 文档的长度 转换为varchar max 711 select xTempXML select Pres
  • T-SQL:用最新的非空值替换 NULL 的最佳方法?

    假设我有这张表 id value 1 5 2 4 3 1 4 NULL 5 NULL 6 14 7 NULL 8 0 9 3 10 NULL 我想编写一个查询来替换任何NULL值与表中最后一个不为空的值在那一栏里 我想要这个结果 id va
  • 什么时候应该使用 C++ 而不是 SQL?

    我是一名 C 程序员 偶尔使用 MySQL 来处理数据库 但我的 SQL 知识相当有限 但我肯定愿意改变这一点 目前 我正在尝试仅使用 SQL 查询对数据库中的数据进行分析 但我准备放弃了 转而将数据导入到C 中 用C 代码进行分析 我和同
  • Reporting Services 在哪里存储其日志文件

    最相关的谷歌结果似乎表明 为了访问日志 我们必须将您自己的日志表部署到数据库并制作报告服务写入它 http technet microsoft com en us library ms157403 aspx 简而言之 Reporting S
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • st_intersects 与 st_overlaps

    这两个查询有什么区别 select a gid sum length b the geom from polygons as a roads as b where st intersects a the geom b the geom gr
  • 解析带下划线的 SQL Server 数字文字

    我想知道它为什么有效以及为什么它不返回错误 SELECT 2015 11 Result 11 2015 第二种情况 SELECT 2 1 a a 2 1 检查元数据 SELECT name system type name FROM sys
  • 从 Getdate() 获取时间

    我想采取Getdate 结果 例如 2011 10 05 11 26 55 000 into 11 26 55 AM 我看过其他地方并发现 Select RIGHT CONVERT VARCHAR GETDATE 100 7 这给了我 11
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 将MongoDb atlas数据库导出到本机Mongo compass

    我在 Atlas 中有一个名为 test 的远程数据库 我想将集合名称 image table 下载为 JSON 文件 在 Mac 终端中 mongoexport db test collection image table image j
  • 解析“流”JSON

    我在浏览器中有一个网格 我想通过 JSON 将数据行发送到网格 但浏览器应该在接收到 JSON 时不断解析它 并在解析时将行添加到网格中 换句话说 在接收到整个 JSON 对象后 不应将行全部添加到网格中 应该在接收到行时将其添加到网格中
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有

随机推荐

  • 如何调试大型 git 提交?

    好的 情况如下 几年前 我们对代码库中的多个文件进行了多项更改 并一次性全部提交 这些更改中的某个地方隐藏着一个错误 使用 git bisect 我很快就能够追踪到罪魁祸首的提交 但该提交中的更改量让我有点不那么热情了 使用 git bis
  • rshiny - 有条件的条件面板:检查列表中的项目

    我有 2 个列表 每个列表包含多个 idp id以另一个变量为条件d d1 lt as list unique df p id df d 1 d2 lt as list unique df p id df d 2 我想添加一个conditi
  • ASP.Net 5 project.json 脚本命令的完整列表? (视觉工作室 2015)

    我已经看过了ASP NET 5团队 wiki 条目项目 json 来识别哪个脚本命令可用 目前列出以下内容 scripts prebuild echo before building postbuild echo after buildin
  • 顶层例外

    我在用着topshelf http topshelf project com 当我尝试使用 i 选项安装为服务时 我收到此异常 无法将 Magnum CommandLineParser SwitchElement 类型的对象转换为 Magn
  • 为 athena 选择特定文件

    在 Athena 中创建表时 我无法使用特定文件创建表 有没有办法从给定的存储桶中选择以 year 2019 开头的所有文件 例如 s3 bucketname prefix year 2019 csv 文档对此说得很清楚 这是不允许的 Fr
  • 正则表达式使用 YYYY-MM-DD 格式验证 PHP 中的日期

    我正在尝试制作一个日期正则表达式验证器 我遇到的问题是我正在使用输入字段 date type 这在 Chrome 中就像一个魅力 它会在 Chrome 中打开类似日历的功能 但在其余部分它什么也不做 所以我决定手动输入其余部分的日期 这是我
  • 等待目标设备上线

    我最近更新到 Android Studio 2 3 现在当我尝试运行该应用程序时 模拟器无法上线 300 秒后超时 此外 该应用程序遇到了致命异常错误 OOM 我不确定如何解决该问题 或者这是否是模拟器问题的一部分 任何帮助深表感谢 再说一
  • 如何将数据从一张工作表导入到另一张工作表

    我在 Excel 中有两个不同的工作表 所有第 1 行单元格中的标题都相同 a1 id b1 名称 c1 价格 我的问题是 有没有办法将数据 如名称 从一个工作表导入到另一个工作表中 其中两个工作表中的 id 相同 eg sheet 1 s
  • 如何找到 2 个数字中的最大值(更大、更大)?

    我有两个变量value and run value 9999 run problem getscore 如何找出哪个更大 并获得更大的值 See also Find the greatest largest maximum number i
  • Thread.Sleep 与 Task.Delay?

    我知道Thread Sleep阻塞一个线程 但确实Task Delay还阻止 或者只是像Timer它对所有回调使用一个线程 当不重叠时 this https stackoverflow com questions 15341962 how
  • 如何在 git 服务器端禁用压缩?

    我有一个存储库 从中拉取需要很长时间 因为服务器几乎没有可用 RAM 并且它在交换时进行了大量操作 remote Compressing objects 24 正在发生 即使我在服务器本地克隆 网络没有那么受限 因此发送所有未压缩的数据就可
  • PHP:多维数组中的foreach

    我有一个动态表单来创建创建数组的章节和子章节 var dump POST array textfield gt array 0 gt title one 1 gt title two 2 gt title three 4 gt title
  • SwiftUI - 如何将工具栏添加到 NavigationView 内的 TabView 选项卡?

    我正在尝试添加不同的toolbars 到我的每个选项卡 但它们没有显示 该应用程序主要在横向 iPad 上使用 我可以将工具栏添加到TabView本身并显示 但我不知道如何将按下导航堆栈的按钮传递到要在本地处理的各个视图 视图模型 我尝试过
  • Flutter:-如何将视图放置在屏幕的中心和底部?

    我正在创建教程屏幕 其中有两个视图 一个应该位于屏幕中央 另一个应该位于屏幕底部 但我的两种观点都不正确 请检查下面的图片 我已经完成了一些代码行来做到这一点 但没有得到正确的解决方案 请检查下面的代码一次 import package f
  • 如何将ajax放入循环中?

    我在循环内的 ajax 请求中有一个 ajax 请求 这里是 for var i 0 i lt input files length i ajaxFileUpload url dasdasdsa success function ajax
  • Python(flask/marshmallow)ValueError:解包值太多(预期为 2)

    我正在开发 Flask 项目 并使用 marshmallow 来验证用户输入 下面是一个代码片段 def create user in data request get json data errors Userschema load in
  • 如何在 Vue.js 方法函数中设置默认参数值?

    我试图在我的组件方法之一中为函数设置默认参数值 例如 methods myFuntion isAction false 但是当调试 isAction 的值时我得到一个 MouseEvent 我找到了解决方案 看起来事件也默认传递给该方法 因
  • 带有 ASP.NET 网站的 NUnit

    我目前正在尝试升级我们工作中的构建服务器 从没有构建服务器到拥有一个 我正在使用 JetBrainsTeamCity http en wikipedia org wiki TeamCity 已经使用过锐锐 http en wikipedia
  • Angular2 和 TypeScript 导入 node_modules

    我有一个非常简单的 hello world Angular2 应用程序 我还做出了一个明显不合理的决定 即在我的开发项目和 Spring 后端的最终部署文件夹之间使用不同的目录结构 由于这种差异 我在 TypeScript 导入方面遇到了问
  • 从嵌套集生成 JSON(perl、sql、jquery)

    我在数据库中有内容页面 使用嵌套集 我需要通过 jQuery jsTree 插件显示它 需要返回带有如下数据的 JSON data node1Title children data subNode1Title children data s