public static Issue parseIssueDetails()

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);
	}