How to properly handle the Arduino String
+1 to @majenko's comments. I tend to avoid the String class, as I like to know what is actually going on, and I stick to char * and char [] in general (and the stdlib functions like sprintf, strlen, etc).
Couple of notes on your question:

&quot;foo/bar&quot; is fine. Some characters have special meanings in the C language itself, so you need to escape them with the \. For example if &quot; was part of your literal string, you'd write &quot;foo\&quot;bar\&quot;&quot;

I tend to use ArduinoJSON to parse. If my app is just sending JSON payloads, I just build it with sprintf or print which results in smaller programs. But, I guess it is a matter of choice. It is a great library.