发送给MQ的消息中包含转义字符,转换为JSON时出现异常

Message contains escape character in the message sent to MQ and cause exception when converting to JSON

我有一个方法:

public void sendMessage(MyJobDTO myJobDTO) {
    jmsTemplate.send(new MessageCreator() {

        public Message createMessage(Session session) throws JMSException {

            TextMessage message = null;
                message = session.createTextMessage(myJobDTO.toString());
                logger.info("Sending message...");
                logger.info(message);
            

            return message;
        }
    });
    
}

和我的 DTO 的 toString():

@Override
public String toString() {
    return "{" +
            "\"A\":" + "\"" + prop_a + "\"," +
            "\"B\":" + "\"" + prop_b + "\"," +
            "\"C\":" + "\"" + prop_c + "\"" +
            "}";
}

我意识到当其他应用程序收到 MQ 消息时(使用 Spring Boot with JMS),转义字符 \ 出现,导致错误。我试着做 replaceAll("\\", "") 但找不到任何东西可以替换。如何去掉发送给MQ的消息中的\

处理此问题的简洁方法是使用适当的 JSON 库来创建 JSON 字符串。例如,使用 org.json 库 (javadoc).

public String toString() 
    JSONObject jo = new JSONObject();
    jo.put("A", propA);
    jo.put("B", propB);
    jo.put("C", propC);
    return jo.toString();
}

如果有必要,这将转义 propA 等中的值。结果将是格式正确的 JSON.