What is escape character in Java?
Mainly escape characters are the characters which replaces existing character
with new & provided character
which works best without throwing any error at runtime.
Also, it’s required in order for inter systems/process transmission, i.e. same char works for C++, Java, etc programming language.
In this tutorial we will go over two Escape Character Utilities.
- URLEscapeUtil
- JSONEscapeUtil
Also this tutorial will help you if you have below questions:
- Java escape characters in string
- Which characters need to be escaped on HTML
- What does escape char means in java
- Java escape characters in string
- How do I escape a String for Java?
- Escape Sequences in Java with Examples
Let’s get started:
- Create class CrunchifyEscapeCharUtility.java
- Create method crunchifyURLEscapeUtil(String s) – which returns String with escape character in provided URL
- Create method crunchifyJSONEscapeUtil(String s) – which returns String with escape character in provided JSON
- In Main() –
- we will read the JSON data from file
- provide file name is
Crunchify_Escape_Util.txt
- We use
java.net.URLEncoder
to add URL escape char
In Java when we encode a String, the following rules apply:
Here is a Crunchify_Escape_Util.txt
file content. Please put it into your laptop/desktop and update path location in program.
{ "founder": "App Shah", "blogURL": "https://crunchify.com", "twitter": "https://twitter.com/Crunchify", "social": { "facebook": "http://facebook.com/Crunchify", "pinterest": "https://www.pinterest.com/Crunchify/crunchify-articles”, "rss": "https://crunchify.com/feed/" } }
Option-1: Here is a complete Java Example.
- Create our own Escape JSON and URL methods.
package crunchify.com.tutorials; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.text.StringCharacterIterator; /** * @author Crunchify.com * Version: 1.0 * Program: Escape Character Utility for URL and JSON data - Feel free to use in your Java Project. */ public class CrunchifyEscapeCharUtility { public static void main(String[] args) { // URL Escape Utility String crunchifyURL = "https://crunchify.com/this is test"; crunchifyLog("Sample URL: " + crunchifyURL); crunchifyLog("Escaped URL: " + crunchifyURLEscapeUtil(crunchifyURL)); // JSON Escape Utility // We will read file first and then we will do escape char on that StringBuilder jsonData = new StringBuilder(); BufferedReader crunchifyBufferReader = null; try { String crunchifyLine; crunchifyBufferReader = new BufferedReader( new FileReader("/Users/app/Downloads/Crunchify_Escape_Util.txt")); while ((crunchifyLine = crunchifyBufferReader.readLine()) != null) { jsonData.append(crunchifyLine).append("\n"); } // IOException: Signals that an I/O exception of some sort has occurred. // This class is the general class of exceptions produced by failed or interrupted I/O operations. } catch (IOException exception) { exception.printStackTrace(); } finally { try { if (crunchifyBufferReader != null) crunchifyBufferReader.close(); } catch (IOException ex) { ex.printStackTrace(); } } // Let's print raw JSON file data crunchifyLog("\n Sample JSON: " + jsonData.toString().toString()); // Let's print data after escaping JSON strings crunchifyLog("Escaped JSON: " + crunchifyJSONEscapeUtil(jsonData.toString().toString())); } // Used to ensure that HTTP query strings are in proper form, by escaping special characters such as spaces. // Translates a string into application/x-www-form-urlencoded format using a specific encoding scheme public static String crunchifyURLEscapeUtil(String crunchifyURL) { String crunchifyNewURL; // UTF_8: Eight-bit UCS Transformation Format. crunchifyNewURL = URLEncoder.encode(crunchifyURL, StandardCharsets.UTF_8); return crunchifyNewURL; } // JSON Escape Utility public static String crunchifyJSONEscapeUtil(String crunchifyJSON) { // StringBuilder(): Constructs a string builder with no characters in it and an initial capacity of 16 characters. final StringBuilder crunchifyNewJSON = new StringBuilder(); // StringCharacterIterator class iterates over the entire String StringCharacterIterator crunchifyIterator = new StringCharacterIterator(crunchifyJSON); // current(): Implements CharacterIterator.current() for String. char crunchifyChar = crunchifyIterator.current(); // DONE = \\uffff (not a character) while (crunchifyChar != StringCharacterIterator.DONE) { if (crunchifyChar == '\"') { crunchifyNewJSON.append("\\\""); } else if (crunchifyChar == '\t') { crunchifyNewJSON.append("\\t"); } else if (crunchifyChar == '\f') { crunchifyNewJSON.append("\\f"); } else if (crunchifyChar == '\n') { crunchifyNewJSON.append("\\n"); } else if (crunchifyChar == '\r') { crunchifyNewJSON.append("\\r"); } else if (crunchifyChar == '\\') { crunchifyNewJSON.append("\\\\"); } else if (crunchifyChar == '/') { crunchifyNewJSON.append("\\/"); } else if (crunchifyChar == '\b') { crunchifyNewJSON.append("\\b"); } else { // Nothing matched - just as text as it is. // next(): Implements CharacterIterator.next() for String. crunchifyNewJSON.append(crunchifyChar); } crunchifyChar = crunchifyIterator.next(); } return crunchifyNewJSON.toString(); } // Simple log utility private static void crunchifyLog(String crunchifyData) { System.out.println(crunchifyData); } }
Eclipse Console Output:
Sample URL: https://crunchify.com/this is test Escaped URL: https%3A%2F%2Fcrunchify.com%2Fthis+is+test Sample JSON: { "founder": "App Shah", "blogURL": "https://crunchify.com", "twitter": "https://twitter.com/Crunchify", "social": { "facebook": "http://facebook.com/Crunchify", "pinterest": "https://www.pinterest.com/Crunchify/crunchify-articles”, "rss": "https://crunchify.com/feed/" } } Escaped JSON: {\n \"founder\": \"App Shah\",\n \"blogURL\": \"https:\/\/crunchify.com\",\n \"twitter\": \"https:\/\/twitter.com\/Crunchify\",\n \"social\": {\n \"facebook\": \"http:\/\/facebook.com\/Crunchify\",\n \"pinterest\": \"https:\/\/www.pinterest.com\/Crunchify\/crunchify-articles”, \n \"rss\": \"https:\/\/crunchify.com\/feed\/\"\n }\n}\n Process finished with exit code 0
Option-2: Using Apache Common’s commons-text dependency
- Add Maven’s pom.xml dependency
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-text</artifactId> <version>1.9</version> </dependency>
Complete code:
- Create class: CrunchifyEscapeJSONTutorial.java
package crunchify.com.java.tutorials; import org.apache.commons.text.StringEscapeUtils; /** * @author Crunchify.com * Program: In Java How to Escape JSON? Simple Tutorial using Apache Commons Library. */ public class CrunchifyEscapeJSONTutorial { public static void main(String[] args) { // StringEscapeUtils: Escapes and unescapes Strings for Java, Java Script, HTML and XML. // #ThreadSafe# // This code has been adapted from Apache Commons Lang 3.5. String crunchifyHTML = "{\n" + " \"founder\": \"App Shah\",\n" + " \"blogURL\": \"https://crunchify.com\",\n" + " \"twitter\": \"https://twitter.com/Crunchify\",\n" + " \"social\": {\n" + " \"facebook\": \"http://facebook.com/Crunchify\",\n" + " \"pinterest\": \"https://www.pinterest.com/Crunchify/crunchify-articles”,\n" + " \"rss\": \"https://crunchify.com/feed/\"\n" + " }\n" + "}"; // escapeJson: Escapes the characters in a String using Json String rules. // Escapes any values it finds into their Json String form. Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.) // So a tab becomes the characters '\\' and 't'. // The only difference between Java strings and Json strings is that in Json, forward-slash (/) is escaped. String crunchifyResult = StringEscapeUtils.escapeJson(crunchifyHTML); crunchifyPrintUtils(crunchifyResult); } private static void crunchifyPrintUtils(String crunchifyResult) { System.out.println(crunchifyResult); } }
IntelliJ IDEA Result:
We moved over to IntelliJ IDEA since last two years. Here is a console result.
{\n \"founder\": \"App Shah\",\n \"blogURL\": \"https:\/\/crunchify.com\",\n \"twitter\": \"https:\/\/twitter.com\/Crunchify\",\n \"social\": {\n \"facebook\": \"http:\/\/facebook.com\/Crunchify\",\n \"pinterest\": \"https:\/\/www.pinterest.com\/Crunchify\/crunchify-articles\u201D,\n \"rss\": \"https:\/\/crunchify.com\/feed\/\"\n }\n} Process finished with exit code 0
Let me know if you face any issue running this Java Application.