public static String parse()

in spring-ai-alibaba-mcp/spring-ai-alibaba-mcp-nacos-dynamic-server/src/main/java/com/alibaba/cloud/ai/mcp/dynamic/server/jsontemplate/ResponseTemplateParser.java [41:89]


	public static String parse(String rawResponse, String responseTemplate) {
		if (!StringUtils.hasText(responseTemplate) || "{{.}}".equals(responseTemplate.trim())) {
			// 原样输出
			return rawResponse;
		}

		// jsonPath 提取
		if (responseTemplate.trim().startsWith("$.") || responseTemplate.trim().startsWith("$[")) {
			try {
				Object result = JsonPath.read(rawResponse, responseTemplate.trim());
				return result != null ? result.toString() : "";
			}
			catch (Exception e) {
				// jsonPath 失败,降级为模板处理
			}
		}

		// 模板变量替换
		try {
			Map<String, Object> context = null;
			boolean isJson = rawResponse.trim().startsWith("{") || rawResponse.trim().startsWith("[");
			if (isJson) {
				context = objectMapper.readValue(rawResponse, Map.class);
			}
			StringBuffer sb = new StringBuffer();
			Matcher matcher = TEMPLATE_PATTERN.matcher(responseTemplate);
			while (matcher.find()) {
				String key = matcher.group(1);
				String value;
				if (key == null || key.isEmpty()) {
					// {{.}} 变量,直接替换为原始响应
					value = rawResponse;
				}
				else if (context != null && context.containsKey(key)) {
					value = String.valueOf(context.get(key));
				}
				else {
					value = "";
				}
				matcher.appendReplacement(sb, Matcher.quoteReplacement(value));
			}
			matcher.appendTail(sb);
			return sb.toString();
		}
		catch (Exception e) {
			// 模板处理失败,降级为原样输出
			return rawResponse;
		}
	}