小编use*_*490的帖子

如何在java中递归遍历graphql文档并找到它达到的最深层次

我的目标是遍历一个 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)

java recursion graphql graphql-java

0
推荐指数
1
解决办法
1171
查看次数

标签 统计

graphql ×1

graphql-java ×1

java ×1

recursion ×1