Detecting special characters in string

    root["message"].as<String>().toCharArray(newMessage, BUF_SIZE); // This is not handling special characters properly

What part of that is not handling the special characters properly? You are invoking the [] operator, to get something. You pass that something to the as function, which does something we can only guess at. You call the toCharArray() method to convert the chars to an array of chars. That method does NOT handle characters that are not in the range -128 to 127.

What value does the character that is not "handled properly" have?