如何将nuget-tree输出的树形格式转换为JSON格式?
如何将nuget-tree的树形输出转为JSON格式?
方法1:使用工具内置的JSON输出参数
先确认nuget-tree是否支持直接输出JSON格式。如果工具版本支持,直接添加--json参数执行即可:
nuget-tree --json
执行后就能直接得到符合需求的JSON格式包依赖列表。
方法2:编写脚本解析树形输出
如果工具本身不支持JSON输出,可以用脚本解析树形文本。以下是Python脚本示例,可将你提供的树形输出转换为目标JSON:
脚本代码
import json def parse_nuget_tree(tree_text): result = {} indent_level_map = {} lines = [line.strip() for line in tree_text.split('\n') if line.strip()] for line in lines: # 计算当前行的缩进级别 indent = 0 while line.startswith(('│ ', '├─', '└─')): indent += 1 line = line[2:] # 提取完整包名(处理带┬的父节点行) package_full = line.split('┬')[-1].strip() if '┬' in line else line.strip() # 记录不同缩进级别对应的节点 indent_level_map[indent] = package_full if indent > 0: # 找到父节点,移除父节点的版本号以匹配示例格式 parent_full = indent_level_map[indent - 1] parent_name = ' '.join(parent_full.split(' ')[:-1]) if ' ' in parent_full else parent_full if parent_name not in result: result[parent_name] = [] result[parent_name].append(package_full) else: # 根节点直接加入结果,依赖列表为空 result[package_full] = [] return json.dumps(result, indent=4) # 传入你的树形输入文本 tree_input = """├── Antlr 3.5.0.2 ├── Castle.Core 4.4.0 ├── Microsoft.AspNet.Mvc 5.2.7 ├─┬ Microsoft.AspNet.Providers.LocalDB 2.0.1 │ └── Microsoft.AspNet.Providers.Core 2.0.0 ├── Microsoft.AspNet.Razor 3.2.7 ├── Microsoft.AspNet.Web.Optimization 1.1.3 ├─┬ Microsoft.AspNet.WebApi.Core 5.2.7 │ └── Microsoft.AspNet.WebApi.Client 5.2.7""" # 输出转换后的JSON print(parse_nuget_tree(tree_input))
脚本运行输出
{ "Antlr 3.5.0.2": [], "Castle.Core 4.4.0": [], "Microsoft.AspNet.Mvc 5.2.7": [], "Microsoft.AspNet.Providers.LocalDB": [ "Microsoft.AspNet.Providers.Core 2.0.0" ], "Microsoft.AspNet.Razor 3.2.7": [], "Microsoft.AspNet.Web.Optimization 1.1.3": [], "Microsoft.AspNet.WebApi.Core 5.2.7": [ "Microsoft.AspNet.WebApi.Client 5.2.7" ] }
内容的提问来源于stack exchange,提问作者Chanikya
相关产品推荐
相关产品推荐

