我的目标是遍历一个 graphql Java 文档对象并返回最大深度。
示例:深度 0
{
name
}
Run Code Online (Sandbox Code Playgroud)
示例:深度 1
{
viewer{
viewerId
}
}
Run Code Online (Sandbox Code Playgroud)
示例:深度 2
{
viewer{
albums{
albumId
}
}
}
Run Code Online (Sandbox Code Playgroud)
示例:深度 2。如您所见,两张专辑/歌曲都在同一个父“观众”下
{
viewer{
albums{
albumId
}
songs{
songId
}
}
}
Run Code Online (Sandbox Code Playgroud)
示例:深度 3
{
viewer{
albums{
tracks{
trackId
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经编写了基本代码来遍历它,但我的代码不适用于第二个版本的 depth = 2。它返回 depth = 3 而不是 2。原因是因为它在同一个父项下计数两次。本质上的逻辑是这样的:depth = depth + 1 每当一个字段有子项时。
import graphql.language.Document;
import graphql.language.Node;
import graphql.language.OperationDefinition;
public int checkDepthLimit(String query) {
Document document;
try {
document = documentParser.parseDocument(query); …Run Code Online (Sandbox Code Playgroud)