in community/tool-calls/spring-ai-alibaba-starter-tool-calling-githubtoolkit/src/main/java/com/alibaba/cloud/ai/toolcalling/githubtoolkit/GetIssueService.java [79:114]
public static Issue parseIssueDetails(String json) throws IOException {
JsonNode issueNode = objectMapper.readTree(json);
long id = issueNode.get("id").asLong();
String title = issueNode.get("title").asText();
String state = issueNode.get("state").asText();
String userLogin = issueNode.get("user").get("login").asText();
JsonNode labelsNode = issueNode.get("labels");
List<String> labels = new ArrayList<>();
if (labelsNode != null && labelsNode.isArray()) {
for (JsonNode labelNode : labelsNode) {
String name = labelNode.get("name").asText();
labels.add(name);
}
}
JsonNode assigneesNode = issueNode.get("assignees");
List<String> assignees = new ArrayList<>();
if (assigneesNode != null && assigneesNode.isArray()) {
for (JsonNode assigneeNode : assigneesNode) {
String assigneeLogin = assigneeNode.get("login").asText();
assignees.add(assigneeLogin);
}
}
String createdAt = issueNode.get("created_at").asText();
String updatedAt = issueNode.get("updated_at").asText();
String closedAt = issueNode.has("closed_at") && !issueNode.get("closed_at").isNull()
? issueNode.get("closed_at").asText() : null;
String closedBy = issueNode.has("closed_by") && !issueNode.get("closed_by").isNull()
? issueNode.get("closed_by").get("login").asText() : null;
int comments = issueNode.get("comments").asInt();
String htmlUrl = issueNode.get("html_url").asText();
String body = issueNode.has("body") && !issueNode.get("body").isNull() ? issueNode.get("body").asText() : null;
return new Issue(id, title, body, state, userLogin, labels, assignees, createdAt, updatedAt, closedAt, closedBy,
comments, htmlUrl);
}