【问题标题】:Get nested/hierarchical JSON from MySQL/PHP从 MySQL/PHP 获取嵌套/分层 JSON
【发布时间】:2011-02-08 07:10:22
【问题描述】:

我正在使用spacetree chart,我需要分层格式的 JSON。请参阅示例所需的 JSON 格式 here。我在 Mysql 数据库表中有 ID、ParentID、Name、Description 字段。现在如何使用 PHP 转换分层/嵌套 JSON 中的数据? 我知道 json_encode($array)。但是,我需要嵌套/分层 php 数组。 让我知道这样做。

【问题讨论】:

    标签: php jquery mysql json hierarchical-data


    【解决方案1】:

    您基本上在这里问了两个问题 - 1)如何从 db 表中获取分层 php 结构,以及 2)如何在 json 中编码此结构。例如,对于第一个问题,请参阅我的(旧但工作)code。其次,我相信简单的 json_encode 会很好用。

    【讨论】:

    • 谢谢@stereofrog。你非常接近我的对象。编码格式与所需的 json 不同。我不需要 parent_ID,还有一些额外的东西即将推出。
    【解决方案2】:

    如果您在服务器上安装了 PHP json 扩展,只需在数组上使用它即可。步骤将是:

    1. 根据 mysql 结果构建具有层次结构的 PHP 数组
    2. 调用 json_encode($array) http://pl.php.net/manual/en/function.json-encode.php

    如果您的服务器上没有启用 json_encode 并且无法安装...您只需要手动编写即可。

    会是这样的(未经测试的代码警告)

    function my_json_encode($array)
    {
      $return = '{';
      $count = count($array);
      $i = 0;
      foreach ($array as $key => $val)
      {
        $return .= '"'.$key.'" : ';
        if (!is_array($val))
          $return .= '"'.$val.'"';
        else
          $return .= my_json_encode($val);
        if ($i < $count-1)
          $return .=",";
        $i++;
      }
      $return .= '}';
      return $return;
    }
    

    【讨论】:

    • 此解决方案是一个简单的概念验证,必须加以改进。例如,添加对象类型支持和一些错误句柄。还是用 json_encode 比较好。
    • 抱歉,还有一件事。如果您要发送 json,请记住您应该设置适当的标头作为响应。喜欢:header('Content-type: application/json');
    • 现在我的问题是如何创建嵌套/分层 php 数组?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 2021-10-05
    相关资源
    最近更新 更多