Jackson如何使JSON输出变得优雅?
本篇文章翻译自: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。
Jackson如何使JSON输出变得优雅?的更多相关文章
- Springmvc 配置json输出的几种方式
Spring MVC 3.0 返回JSON数据的几种方法: 1. 直接 PrintWriter 输出 2. 使用 JSP 视图 3. 使用Spring内置的支持 // Spring MVC 配置 &l ...
- 用jackson包实现json、对象、Map之间的转换
jackson API的使用 用jackson包实现json.对象.Map之间的转换
- jackson实体转json时 为NULL不参加序列化的汇总
首先加入依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson ...
- FastJson/spring boot: json输出方法二
1.引入FastJson依赖包 <!-- FastJson --> <dependency> <groupId>com.alibaba</groupId> ...
- FastJson/spring boot: json输出
1.引入FastJson依赖包 <!-- FastJson --> <dependency> <groupId>com.alibaba</groupId> ...
- Jackson 对象与json数据互转工具类JacksonUtil
1,User对象 package com.st.json; import java.util.Date; /** * @Description: JSON序列化和反序列化使用的User类 * @aut ...
- 重构qDebug()<<,使log输出到文件
重构qDebug()<<,使log输出到文件 #include <QProcessEnvironment> #include <QDateTime> #includ ...
- chalk插件 使终端输出的字带颜色
1.使终端输出红色字体: const chalk = require('chalk'); console.log(chalk.red('this is red!') 这时运行终端,打印的this is ...
- jackson解析处理JSON
package com.ruoyi.common.json; import java.io.File; import java.io.IOException; import java.io.Input ...
随机推荐
- IE 不兼容的几个js问题及解决方法1
IE 不兼容的几个js问题及解决方法 1 Table的问题 在动态新增tr或者td时,createElecment() 一般用appendChild();都不生效,解决办法是用新增tbody, 如 ...
- Bypass pattern lock on Sony Xperia Z2 and backup all data
Yesterday she came to me with a Sony Xperia Z2 D6503. Guess what? She forgot the pattern so she coul ...
- hdu2093
#include <stdio.h> #include <string.h> #include <algorithm> #include <math.h> ...
- 盒子的padding不影响总的大小css代码
-moz-box-sizing: border-box; /*Firefox3.5+*/-webkit-box-sizing: border-box; /*Safari3.2+*/-o-box-siz ...
- win7启动文件修复
1:在xp下运行bcdedit.exe(这软件在windows 7的系统盘下 就在你的c:\windows\system32\这里2:将这软件复制到c盘根目录下3:进入命令提示符 输入 c:4:输入 ...
- windows phone上下文菜单ContextMenu的使用示例
新建一个WP项目,命名为contextmenu,然后往界面拖入一个ListBox控件listBox1,接着切换到XAML代码界面设置其属性,代码如下 <ListBox Height=" ...
- canvas 绘圆加边框
HTML5中canvas元素,绘制圆形需要使用路径,开始时要取得图形上下文,首先使用路径来勾勒图形的轮廓,然后设置颜色,进行绘制. arc(cx,cy,radius,start_angle,end_a ...
- 启动hadoop报ERROR org.apache.hadoop.hdfs.server.namenode.FSImage: Failed to load image from FSImageFile
不知道怎么回事,今天在启动集群时通过jps查看进程时始终有一个standby namenode进程无法启动.查看日志时报的是不能加载fsimage文件.日志截图如下: 日志报的很明显了是不能加载元数据 ...
- Modoer列表页性能分析及优化
在 http://www.modoer.org/beijing/item/list-8 的页面中,会执行以下2个sql SELECT s.sid,pid,catid,domain,name,avgso ...
- wampserver php多版本5.2--5.6和apche2.2/2.4
一.准备 wampserver2.5 php5各版本 php5.2到php5.6 apache2.2和apache2.4 二.安装 先成功安装wampserver2.5,如果安装不成功,多是vc11没 ...