如何在 FLASK 中创建分层 json 响应

How can I create a hierarchical json response in FLASK

我在数据库中有一个 table,例如 database table。我想从数据库中搜索 child 并在前端搜索 return 层次结构 JSON 以创建树。我怎样才能在 FLASK 中做到这一点。 我对垫子的预期 JSON 应该像 expected JSON

由于您已使用 标记您的问题,因此 post 假定您也使用 Python。要在 JSON 字符串中格式化数据库值,您可以查询数据库,然后使用递归:

import sqlite3, collections
d = list(sqlite3.connect('file.db').cursor().execute("select * from values"))
def get_tree(vals):
  _d = collections.defaultdict(list)
  for a, *b in vals:
    _d[a].append(b)
  return [{'name':a, **({} if not (c:=list(filter(None, b))) else {'children':get_tree(b)})} for a, b in _d.items()]

import json
print(json.dumps(get_tree(d), indent=4))

输出:

[
  {
    "name": "AA",
    "children": [
        {
            "name": "BB",
            "children": [
                {
                    "name": "EE",
                    "children": [
                        {
                            "name": "JJ",
                            "children": [
                                {
                                    "name": "EEV"
                                },
                                {
                                    "name": "FFW"
                                }
                            ]
                        },
                        {
                            "name": "KK",
                            "children": [
                                {
                                    "name": "HHX"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "CC",
            "children": [
                {
                    "name": "FF",
                    "children": [
                        {
                            "name": "LL",
                            "children": [
                                {
                                    "name": "QQY"
                                }
                            ]
                        },
                        {
                            "name": "MM",
                            "children": [
                                {
                                    "name": "RRV"
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "GG",
                    "children": [
                        {
                            "name": "NN",
                            "children": [
                                {
                                    "name": "SSW"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "DD",
            "children": [
                {
                    "name": "HH",
                    "children": [
                        {
                            "name": "OO",
                            "children": [
                                {
                                    "name": "TTZ"
                                }
                            ]
                        }
                    ]
                },
                {
                    "name": "II",
                    "children": [
                        {
                            "name": "PP",
                            "children": [
                                {
                                    "name": "UUW"
                                }
                             ]
                         }
                      ]
                  }
              ]
          }
      ]
   }
]