Java 格式化json为json树

复制代码
/**
     * @param treeList      数据
     * @param parentIdValue 父级值
     * @param parentIdFiled 父级字段名称
     * @param idFiled       子级字段名称
     * @Description json转jsonTree
     * @Author dongjd
     * @Date 19-1-11 下午5:38
     * @Return com.alibaba.fastjson.JSONArray
     */
    public static JSONArray jsonTreeFormat(List<Map<String, Object>> treeList, String parentIdValue, String parentIdFiled, String idFiled) {
        JSONArray childMenu = new JSONArray();
        treeList.stream().map(map -> JSONObject.parseObject(JSON.toJSONString(map))).forEach(jsonMenu -> {
            String menuId = jsonMenu.getString(idFiled);
            String pid = jsonMenu.getString(parentIdFiled);
            if (parentIdValue.equals(pid)) {
                JSONArray childList = jsonTreeFormat(treeList, menuId, parentIdFiled, idFiled);
                jsonMenu.put("childList", childList);
                childMenu.add(jsonMenu);
            }
        });
        return childMenu;
    }
复制代码

参考资料[1]:https://blog.csdn.net/jianxia801/article/details/82771346

/**
* @param treeList
* @param parentIdValue 级值
* @param parentIdFiled 字段名
* @param idFiled 字段名
* @Description jsonjsonTree
* @Author dongjd
* @Date 19-1-11 下午5:38
* @Return com.alibaba.fastjson.JSONArray
*/
public static JSONArray jsonTreeFormat(List<Map<String, Object>> treeList, String parentIdValue, String parentIdFiled, String idFiled) {
JSONArray childMenu = new JSONArray();
treeList.stream().map(map -> JSONObject.parseObject(JSON.toJSONString(map))).forEach(jsonMenu -> {
String menuId = jsonMenu.getString(idFiled);
String pid = jsonMenu.getString(parentIdFiled);
if (parentIdValue.equals(pid)) {
JSONArray childList = jsonTreeFormat(treeList, menuId, parentIdFiled, idFiled);
jsonMenu.put("childList", childList);
childMenu.add(jsonMenu);
}
});
return childMenu;
}
posted @ 2019-01-14 16:47  膜拜曾文正  阅读(1735)  评论(0)    收藏  举报
编辑推荐:
· 从 Redis 客户端超时到 .NET 线程池挑战
· C23和C++26的#embed嵌入资源指南
· 「EF Core」框架是如何识别实体类的属性和主键的
· 独立开发,这条路可行吗?
· 我在厂里搞 wine 的日子
阅读排行:
· 他没买 iPad,而是花了半年时间,为所有“穷学生”写了个笔记神器
· Visual Studio 现已支持新的、更简洁的解决方案文件(slnx)格式
· 只需一行命令,Win11秒变Linux开发主机!
· 也是出息了,业务代码里面也用上算法了。
· 2025年中总结:我想我克服公众演讲的恐惧了,一个社恐分子突破自我的故事
点击右上角即可分享
微信分享提示