How to escape special characters in building a JSON string?
A JSON string must be double-quoted, according to the specs, so you don't need to escape '
.
If you have to use special character in your JSON string, you can escape it using \
character.
See this list of special character used in JSON :
\b Backspace (ascii code 08)
\f Form feed (ascii code 0C)
\n New line
\r Carriage return
\t Tab
\" Double quote
\\ Backslash character
However, even if it is totally contrary to the spec, the author could use \'
.
This is bad because :
- It IS contrary to the specs
- It is no-longer JSON valid string
But it works, as you want it or not.
For new readers, always use a double quotes for your json strings.
How to escape a JSON string containing newline characters using JavaScript?
Take your JSON and .stringify()
it. Then use the .replace()
method and replace all occurrences of \n
with \\n
.
EDIT:
As far as I know of, there are no well-known JS libraries for escaping all special characters in a string. But, you could chain the .replace()
method and replace all of the special characters like this:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// myEscapedJSONString is now ready to be POST'ed to the server.
But that's pretty nasty, isn't it? Enter the beauty of functions, in that they allow you to break code into pieces and keep the main flow of your script clean, and free of 8 chained .replace()
calls. So let's put that functionality into a function called, escapeSpecialChars()
. Let's go ahead and attach it to the prototype chain
of the String
object, so we can call escapeSpecialChars()
directly on String objects.
Like so:
String.prototype.escapeSpecialChars = function() {
return this.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
};
Once we have defined that function, the main body of our code is as simple as this:
var myJSONString = JSON.stringify(myJSON);
var myEscapedJSONString = myJSONString.escapeSpecialChars();
// myEscapedJSONString is now ready to be POST'ed to the server
Bash: How to escape a string for use in JSON?
Pass $var
as a raw string argument and JQ will automatically convert it to a valid JSON string.
$ jq -n --arg var "$var" '{$var}'
{
"var": "Hello\n \"world\". \n This is \\anything \\or \\nothing\n"
}
How do you escape characters within a string (JSON format)
How to escape Json String in groovy?
.toString()
does not generate JSON - it's a generic debug output and
unsuitable for any way of serialization.
The easiest way to serialize the simple data types as JSON isJsonOutput
. E.g.groovy.json.JsonOutput.toJson(dataset)
.
The other (already imported versions) are fine too (Jackson,
JsonBuilder).
How to avoid escape characters in Spring REST Controller response that returns list of JSON strings?
You can try this to avoid escaping.
@GetMapping(value="list", produces = {MediaType.APPLICATION_JSON_VALUE})
public String getValues(){
String value1 = "{\"name\":\"John\", \"age\":30}";
String value2 = "{\"name\":\"Tom\", \"age\":21}";
return Arrays.asList(value1, value2).toString();
}
Upvote & Accept if this works.
Related Topics
Converting Exponential Value in Java to a Number Format
Error While Running Allure Command Line Generate Command
How to Check Heap Usage of a Running Jvm from the Command Line
How to Use Different Jsonproperty on Serialize & Deserialize Using Jackson API
Typecasting an Object from Parent Class to Child
How to Set a Ttl for @Cacheable
How to Clean Project Cache in Intellij Idea Like Eclipse'S Clean
Java Ssl: How to Disable Hostname Verification
How to Convert Xml to Java.Util.Map and Vice Versa
How to Resolve Java.Lang.Noclassdeffounderror: Javax/Xml/Bind/Jaxbexception
Calculating the Angle Between Two Lines Without Having to Calculate the Slope (Java)
Reading Data from Nested Json Object Using Java
Regex, Remove Whitespace and All Other Characters
How to Retrieve Mapping Table Name for an Entity in JPA At Runtime