I'm using Google's com.google.api.client.json.GenericJson
and com.fasterxml.jackson.core.JsonGenerator
. I would like to serialize JSON object and escape quotes and backslashes so that I can pass that string in Bash. And afterwards deserialize that string.
GenericJson.toString
produces simple JSON, but \n
etc. are not escaped:
{commands=ls -laF\ndu -h, id=0, timeout=0}
is there a simple way how to get something like this:
"{commands=\"ls -laF\\ndu -h\", id=0, timeout=0}"
I don't want to reinvent the wheel, so I'd like to use Jackson or an existing API, if possible.
In the platform, the backslash character ( \ ) is used to escape values within strings. The character following the escaping character is treated as a string literal.
No additional dependencies needed: You're looking for JsonStringEncoder#quoteAsString(String)
.
Click for JsonStringEncoder javadoc
import com.fasterxml.jackson.core.io.JsonStringEncoder;
JsonStringEncoder e = JsonStringEncoder.getInstance();
String commands = "ls -laF\\ndu -h";
String encCommands = new String(e.quoteAsString(commands));
String o = "{commands: \"" + encCommands + "\", id: 0, timeout: 0}"
Ref: http://fasterxml.github.io/jackson-core/javadoc/2.1.0/com/fasterxml/jackson/core/io/JsonStringEncoder.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With