🌳 ParseDependencyTreeJSON
解析 composer show --tree --format=json 的 JSON 输出,返回依赖树节点列表 []DependencyNode。
何时使用
当你已拿到 JSON 格式的依赖树输出,需要程序化遍历包的传递依赖关系时使用。相比文本解析,JSON 版本能可靠地表达父子层级。
签名
go
func ParseDependencyTreeJSON(output string) ([]DependencyNode, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer show --tree --format=json 的原始输出 |
返回值
[]DependencyNode:依赖树根节点列表。每个DependencyNode含Name、Version、Children(递归子节点)。error:JSON 反序列化失败时返回解析依赖树JSON失败: ...错误。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
output := `[{"name":"symfony/console","version":"v5.4.0","children":[{"name":"symfony/string","version":"v6.0.0"}]}]`
nodes, err := composer.ParseDependencyTreeJSON(output)
if err != nil {
log.Fatal(err)
}
for _, n := range nodes {
printNode(n, 0)
}
}
func printNode(n composer.DependencyNode, depth int) {
for i := 0; i < depth; i++ {
fmt.Print(" ")
}
fmt.Printf("%s %s\n", n.Name, n.Version)
for _, c := range n.Children {
printNode(c, depth+1)
}
}进阶
- 📝 若拿到的是
composer show --tree(无--format=json)的文本输出,改用ParseDependencyTreeOutput(output),它按缩进级别推断父子关系(每 4 个字符一级)。 - 🚀 获取文本依赖树用
ShowDependencyTree(packageName)。 - 🔗 同系列解析器见
ParseComposerShowJSON。