本篇文章翻譯自:How to enable PRetty print JSON output (Jackson)
在這篇文章中,我們將教你如何利用Jackson Library在控制臺或者jsp頁面優雅地輸出JSON Object和JSON String。
1、優雅地輸出JSON Object
下面是一個將Object利用Jackson轉換為JSON String的例子。
User user = new User();ObjectMapper mapper = new ObjectMapper();System.out.println(mapper.writeValueAsString(user));
但是輸出結果確實非常緊湊的,一點兒都不美觀。
為了能使他優雅地打印,使用ObjectMapper類的writerWithDefaultPrettyPrinter()方法。
ObjectMapper mapper = new ObjectMapper();System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user));
結果(是不是優雅多了):
{ "age" : 29, "messages" : [ "msg 1", "msg 2", "msg 3" ], "name" : "mkyong"}
2、優雅地輸出JSON String
這有一點點的棘手,再次使用ObjectMapper類的writerWithDefaultPrettyPrinter()方法。
String test = "{/"age/":29,/"messages/":[/"msg 1/",/"msg 2/",/"msg 3/"],/"name/":/"mkyong/"}";System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(test));
上面代碼運行后,我們發現他打印格式還是緊湊的,并不是我們想要的優雅類型。
"{/"age/":29,/"messages/":[/"msg 1/",/"msg 2/",/"msg 3/"],/"name/":/"mkyong/"}"
為了解決這問題,我們需要先將JSON String變成JSON Object,然后再利用 [1] 描述的方法,進行優雅地輸出。
String test = "{/"age/":29,/"messages/":[/"msg 1/",/"msg 2/",/"msg 3/"],/"name/":/"mkyong/"}";Object json = mapper.readValue(test, Object.class);System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json));
輸出結果:
{ "age" : 29, "messages" : [ "msg 1", "msg 2", "msg 3" ], "name" : "mkyong"}
3、在JSP頁面優雅地輸出JSON String
@Controller@RequestMapping("/anything")public class AdminController { @RequestMapping(method = RequestMethod.GET) public ModelAndView index() { String test = "{/"age/":29,/"messages/":[/"msg 1/",/"msg 2/",/"msg 3/"],/"name/":/"mkyong/"}"; Object json = mapper.readValue(test, Object.class); ModelAndView modelandView = new ModelAndView("viewname"); modelandView.addObject("output", mapper.writerWithDefaultPrettyPrinter().writeValueAsString(json)); return modelandViewl; }}
在JSP頁面里面,使用: <pre>${output}</pre>
Note: 本文使用writerWithDefaultPrettyPrinter(),老一套的defaultPrettyPrintingWriter()已經deprecated。
新聞熱點
疑難解答