how to show Pretty Print JSON String in a JSP page
jackson, java, json, jsp, spring-mvc
Solution
White space characters are usually collapsed in HTML (by default). Such characters include newlines. Dump the JSON into a `<pre>`.
<pre>
${response}
</pre>
Other solutions: https://stackoverflow.com/a/10474709/139010
Problem
I want to show a JSON string in a JSP page. I am working with Spring MVC framework. Below is the code ``` String result = restTemplate.getForObject(url.toString(), String.class); ObjectMapper mapper = new ObjectMapper(); Object json = mapper.readValue(result, Object.class); String indented = mapper.defaultPrettyPrintingWriter().writeValueAsString(json); System.out.println(indented);//This print statement show correct way I need model.addAttribute("response", (indented)); ``` This line `System.out.println(indented);` prints out something like this- ``` { "attributes" : [ { "nm" : "ACCOUNT", "error" : "null SYS00019CancellationException in CoreImpl fetchAttributes\n java.util.concurrent.CancellationException\n\tat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:231)\n\tat java.util.concurrent.FutureTask.", "status" : "ERROR" } ] } ``` which is the way I needed to be shown using a JSP page. But when I add it to model like this- ``` model.addAttribute("response", (indented)); ``` And then shows it out in a resultform.jsp page like below- ``` <fieldset> <legend>Response:</legend> <strong>${response}</strong><br /> </fieldset> ``` I get something like this on the browser- ``` { "attributes" : [ { "nm" : "ACCOUNT", "error" : "null SYS00019CancellationException in CoreImpl fetchAttributes\n java.util.concurrent.CancellationException\n\tat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:231)\n\tat java.util.concurrent.FutureTask.", "status" : "ERROR" } ] } ``` which I don't need. I don't know why it get wrapped like this? I needed the way it got printed out above means like this. ``` { "attributes" : [ { "nm" : "ACCOUNT", "error" : "null SYS00019CancellationException in CoreImpl fetchAttributes\n java.util.concurrent.CancellationException\n\tat java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:231)\n\tat java.util.concurrent.FutureTask.", "status" : "ERROR" } ] } ``` Can anyone tell me why it got happened like this? And how can I show it in a JSP page the way I needed?