MySQL 如何生成有层级关系的json数据?小白提问

MySQL查询到的数据如何生成有层级管理的json数据?
表结构如下

表1 province

id name
1 广东
2 湖北

表2 city

id p_id name
1 1 广州
2 1 深圳

如何查询到如下格式的数据呢?

[
    {
        id: 1,
        name: 广东
        city:[
            {
                id: 1,
                p_id: 1,
                name: 广州
            },
            {
                id: 2,
                p_id: 1,
                name: 深圳
            }
        ]
    },
    {
        id:2,
        name: 湖北
    }
]

这个需要自己遍历一遍join left查询的数据,自己生成这种json数据吗?还是会有一些工具? 目前开发语言是node.js

最佳答案

我说说我在java中的做法吧,应该原理是相通的。
数据库照常是原来的映射关系,java中设计的类如下

public class Provience{
    private String name;
    private int id;
    private List city;
    ..........省略setter以及getter
}

然后利用mybatis的嵌套映射功能将查询的数据映射成一个个省类,再使用一些json工具转换。
或者你查一下node.js中有什么框架支持嵌套映射的,用框架会方便很多。