[BAEL-6506] Add utility for Pretty-Print JSON (#14378)
* Add utility for Pretty-Print JSON * Remove accidental change * Address review comments * Address review comments --------- Co-authored-by: rajatgarg <rajatgarg@adobe.com>
This commit is contained in:
parent
dcb08e1495
commit
89d83168ae
|
@ -0,0 +1,34 @@
|
|||
package core;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
|
||||
/*
|
||||
* Class to print string JSON to well-formatted JSON using Jackson and Gson.
|
||||
*/
|
||||
public class JsonPrettyPrinter {
|
||||
private ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
public String prettyPrintJsonUsingDefaultPrettyPrinter(String uglyJsonString) throws JsonProcessingException {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Object jsonObject = objectMapper.readValue(uglyJsonString, Object.class);
|
||||
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonObject);
|
||||
}
|
||||
|
||||
public String prettyPrintUsingGlobalSetting(String uglyJsonString) throws JsonProcessingException {
|
||||
ObjectMapper mapper = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
|
||||
Object jsonObject = mapper.readValue(uglyJsonString, Object.class);
|
||||
return mapper.writeValueAsString(jsonObject);
|
||||
}
|
||||
|
||||
public String prettyPrintUsingGson(String uglyJsonString) {
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
Object jsonObject = gson.fromJson(uglyJsonString, Object.class);
|
||||
return gson.toJson(jsonObject);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,62 @@
|
|||
package core;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNull;
|
||||
|
||||
public class JsonPrettyPrinterUnitTest {
|
||||
|
||||
private String uglyJsonString = "{\"one\":\"AAA\",\"two\":[\"BBB\",\"CCC\"],\"three\":{\"four\":\"DDD\",\"five\":[\"EEE\",\"FFF\"]}}";
|
||||
private core.JsonPrettyPrinter jsonPrettyPrinter = new core.JsonPrettyPrinter();
|
||||
|
||||
@Test
|
||||
public void shouldPrettyPrintJsonStringUsingDefaultPrettyPrinter() throws JsonProcessingException {
|
||||
String formattedJsonString = jsonPrettyPrinter.prettyPrintJsonUsingDefaultPrettyPrinter(uglyJsonString);
|
||||
String expectedJson = "{\n" +
|
||||
" \"one\" : \"AAA\",\n" +
|
||||
" \"two\" : [ \"BBB\", \"CCC\" ],\n" +
|
||||
" \"three\" : {\n" +
|
||||
" \"four\" : \"DDD\",\n" +
|
||||
" \"five\" : [ \"EEE\", \"FFF\" ]\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
assertEquals(expectedJson, formattedJsonString);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldPrettyPrintJsonStringUsingGlobalSetting() throws JsonProcessingException {
|
||||
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGlobalSetting(uglyJsonString);
|
||||
String expectedJson = "{\n" +
|
||||
" \"one\" : \"AAA\",\n" +
|
||||
" \"two\" : [ \"BBB\", \"CCC\" ],\n" +
|
||||
" \"three\" : {\n" +
|
||||
" \"four\" : \"DDD\",\n" +
|
||||
" \"five\" : [ \"EEE\", \"FFF\" ]\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
assertEquals(expectedJson, formattedJsonString);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldPrettyPrintJsonStringUsingGson() {
|
||||
String formattedJsonString = jsonPrettyPrinter.prettyPrintUsingGson(uglyJsonString);
|
||||
String expectedPrettyJson = "{\n" +
|
||||
" \"one\": \"AAA\",\n" +
|
||||
" \"two\": [\n" +
|
||||
" \"BBB\",\n" +
|
||||
" \"CCC\"\n" +
|
||||
" ],\n" +
|
||||
" \"three\": {\n" +
|
||||
" \"four\": \"DDD\",\n" +
|
||||
" \"five\": [\n" +
|
||||
" \"EEE\",\n" +
|
||||
" \"FFF\"\n" +
|
||||
" ]\n" +
|
||||
" }\n" +
|
||||
"}";
|
||||
assertEquals(expectedPrettyJson, formattedJsonString);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue