You can format JSON String in Java using Jackson API's pretty print feature. As you might have noticed in the my previous JSON tutorials that the output of the programs is not properly formatted, which makes them hard to read, especially in large log files where there are so many other text, both JSON and normal text is there. That's why its advised to print JSON String properly formatted because then it will stand out in log file or console. Whenever we print JSON String from Java Programs by using method writeValueAsString(), it usually comes in one line, as shown in following example :{"name":"Virat","sport":"cricket","age":25,"id":121,"lastScores":[77,72,23,57,54,36,74,17]}This is not very readable as you cannot see how many attributes are there, what is their name and value, compare it to following formatted output which is printed using Jackson's pretty print feature:{ "name" : "Virat", "sport" : "cricket", "age" : 25, "id" : 121, "lastScores" : [ 77, 72, 23, 57, 54, 36, 74, 17 ]}Its way better than earlier output, its much more readable. You can easily identify which one is just simple name value pair, which one is JSON array and much more. Wondering, how to nicely print JSON String, just checkout the example shown in next section.JSON String Format and Pretty Print ExampleIn this example you will learn how to format JSON String using Jackson's Pretty Print feature. It's easy to to format JSON text, all you need to do is instead of just calling writeValueAsString() you need to first get defaultPrettyPrintWrite and then call writeValueAsString() method on that object. This will ensure that your JSON data will be nicely printed on console or log file i.e. wherever you print it.
import java.io.IOException;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;/** * Java program to format JSON String using Jackson API. Jackson provides * nice pretty print feature to print JSON text as formatted output. **/public class JSONPrintDemo{ public static void main(String args[]) { int[] recentScores = {77, 72, 23, 57, 54, 36, 74, 17}; Player cricketer = new Player("Virat", "cricket", 25, 121, recentScores); ObjectMapper mapper = new ObjectMapper(); try { System.out.println("Default JSON String:" + mapper.writeValueAsString(cricketer)); System.out.println("formatted JSON String \n" + mapper.defaultPrettyPrintingWriter().writeValueAsString(cricketer)); } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}class Player { private String name; private String sport; private int age; private int id; private int[] lastScores; public Player(String name, String sport, int age, int id, int[] lastinnings) { this.name = name; this.sport = sport; this.age = age; this.id = id; lastScores = lastinnings; } public final String getName() { return name; } public final String getSport() { return sport; } public final int getAge() { return age; } public final int getId() { return id; } public final int[] getLastScores() { return lastScores; } public final void setName(String name) { this.name = name; } public final void setSport(String sport) { this.sport = sport; } public final void setAge(int age) { this.age = age; } public final void setId(int id) { this.id = id; } public final void setLastScores(int[] lastScores) { this.lastScores = lastScores; } @Override public String toString() { return "Player [name=" + name + ", sport=" + sport + ", age=" + age + ", id=" + id + "]"; }}
0 comments :
Post a Comment