I'm struggling to even understand the value that the degree symbol has. It renders in the MD_MAX7219 as a character that appears to be a grid of dots. It renders in the serial output as a degree symbol.
The ASCII value of the degree symbol is well above 127 (according to Wikipedia, it's 248). I understand that this means the character actually takes more than a single byte to encode.
The issue is that I'm unclear on how to detect the first byte of this special character. The MD_MAX7219 library allows you to escape ASCII codes, so I just need to find the two bytes where the symbol occurs, and replace them with the escaped value in the string.
I've tried a few different methods to convert the JSON object property to a character array, and they all result in the same behaviour. Specifically, the methods I've tried are:
sprintf(newMessage, root["message"]);
root["message"].printTo(newMessage, BUF_SIZE); // Includes open and close quotation marks.
snprintf(newMessage, BUF_SIZE, root["message"]);
root["message"].as<String>().getBytes( (unsigned char*)newMessage, BUF_SIZE);
root["message"].as<String>().toCharArray(newMessage, BUF_SIZE);