diff --git a/json/pom.xml b/json/pom.xml
index db98ec437e..fce2d26db5 100644
--- a/json/pom.xml
+++ b/json/pom.xml
@@ -33,6 +33,16 @@
org.json
json
20171018
+
+
+ com.google.code.gson
+ gson
+ 2.8.5
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.9.7
javax.json.bind
diff --git a/json/src/main/java/com/baeldung/escape/JsonEscape.java b/json/src/main/java/com/baeldung/escape/JsonEscape.java
new file mode 100644
index 0000000000..1e5f0d87cb
--- /dev/null
+++ b/json/src/main/java/com/baeldung/escape/JsonEscape.java
@@ -0,0 +1,41 @@
+package com.baeldung.escape;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.gson.JsonObject;
+import org.json.JSONObject;
+
+class JsonEscape {
+
+ String escapeJson(String input) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("message", input);
+ return jsonObject.toString();
+ }
+
+ String escapeGson(String input) {
+ JsonObject gsonObject = new JsonObject();
+ gsonObject.addProperty("message", input);
+ return gsonObject.toString();
+ }
+
+ String escapeJackson(String input) throws JsonProcessingException {
+ return new ObjectMapper().writeValueAsString(new Payload(input));
+ }
+
+ static class Payload {
+ String message;
+
+ Payload(String message) {
+ this.message = message;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+ }
+}
diff --git a/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java b/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java
new file mode 100644
index 0000000000..e959fa227b
--- /dev/null
+++ b/json/src/test/java/com/baeldung/escape/JsonEscapeUnitTest.java
@@ -0,0 +1,36 @@
+package com.baeldung.escape;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class JsonEscapeUnitTest {
+
+ private JsonEscape testedInstance;
+ private static final String EXPECTED = "{\"message\":\"Hello \\\"World\\\"\"}";
+
+ @BeforeEach
+ void setUp() {
+ testedInstance = new JsonEscape();
+ }
+
+ @Test
+ void escapeJson() {
+ String actual = testedInstance.escapeJson("Hello \"World\"");
+ assertEquals(EXPECTED, actual);
+ }
+
+ @Test
+ void escapeGson() {
+ String actual = testedInstance.escapeGson("Hello \"World\"");
+ assertEquals(EXPECTED, actual);
+ }
+
+ @Test
+ void escapeJackson() throws JsonProcessingException {
+ String actual = testedInstance.escapeJackson("Hello \"World\"");
+ assertEquals(EXPECTED, actual);
+ }
+}
\ No newline at end of file