Skip to content

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

I have a method:

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

        public Message createMessage(Session session) throws JMSException {

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

            return message;

and my DTO’s toString():

public String toString() {
    return "{" +
            ""A":" + """ + prop_a + ""," +
            ""B":" + """ + prop_b + ""," +
            ""C":" + """ + prop_c + """ +

I realise when the other application received the MQ message (using Spring Boot with JMS), the escape char appeared, causing errors. I tried to do replaceAll("\\", "") but it couldnt find anything to replace. How can I get rid of the in the message sent to the MQ?


The clean way to handle this is to use a proper JSON library to create the JSON string. For example, using the org.json library (javadoc).

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

This will escape the values in propA etcetera if this is necessary. The result will be well-formed JSON.