diff --git a/pom.xml b/pom.xml
index c63ceb6f..a58b9f42 100644
--- a/pom.xml
+++ b/pom.xml
@@ -332,7 +332,12 @@
easyexcel
3.3.2
-
+
+
+ org.apache.commons
+ commons-text
+ 1.10.0
+
diff --git a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
index 5499294f..0c07f718 100644
--- a/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
+++ b/src/main/java/com/ai/da/common/RabbitMQ/GenerateConsumer.java
@@ -10,9 +10,13 @@ import com.ai.da.service.GenerateService;
import com.ai.da.service.UserLikeGroupService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.text.StringEscapeUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
@@ -23,6 +27,7 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
@@ -266,7 +271,7 @@ public class GenerateConsumer {
log.info("============ProcessPoseTransformResult listening==========");
long start = System.currentTimeMillis();
- Map generateResult = JSONObject.parseObject(msg.getBody(), Map.class);
+ Map generateResult = jsonBytesToMap(msg, channel);
log.info("PoseTransformation response : {}", generateResult);
try {
@@ -311,6 +316,48 @@ public class GenerateConsumer {
}
+ public static Map jsonBytesToMap(Message msg, Channel channel) {
+ try {
+ // 1. byte[] -> String
+ String jsonString = new String(msg.getBody(), StandardCharsets.UTF_8).trim();
+ // 2. 处理可能的双重转义
+ if (jsonString.startsWith("\"") && jsonString.endsWith("\"")) {
+ jsonString = jsonString.substring(1, jsonString.length() - 1);
+ // 使用 Apache Commons Text, 将 JSON 字符串中的转义字符还原为原始字符
+ jsonString = StringEscapeUtils.unescapeJson(jsonString);
+ }
+ // 3. 验证 JSON 格式
+ if (!isValidJson(jsonString)) {
+ throw new IllegalArgumentException("Invalid JSON format");
+ }
+ // 4. 解析为 Map
+ ObjectMapper mapper = new ObjectMapper();
+ return mapper.readValue(jsonString, new TypeReference