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。

 

转载于:https://www.cnblogs.com/howiechih/p/4799142.html

【数据格式】Jackson 美化输出JSON优雅输出JSON数据,格式化输出JSON数据 1.概述 转载:https://www.sojson.com/blog/245.html Jackson 格式化输出JSON 代码说明(对象) 我们一般输出就是普通的toString 输出。如下代码: Demo demo = new Demo("sojson",4,"https://www.sojson.com"); ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.writeValueAsString(demo)); . 阅读详情

相关推荐

Jackson优雅序列化Java枚举类过程解析

主要介绍了Jackson优雅序列化Java枚举类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Java:jackson实现json缩进美化输出

总结起来,Jackson库提供了强大而灵活的功能来处理JSON数据。通过简单地配置ObjectMapper对象, 我们就能轻松地实现JSON数据美化输出, 这对于理解和调试复杂JSON结构无疑是非常有帮助的。有时候,为了更好地理解和调试,我们需要将JSON数据以美化(pretty-print)的形式输出。首先,在你的项目中引入Jackson库。每个字段都独占一行,并且有适当的缩进,使得数据结构一目了然。现在你已经设置好了一个可以生成美化输出的ObjectMapper对象。这样就能得到四空格缩进的美化输出

高性价比服务器就选:蓝易云 904

Jackson-如何启用漂亮的打印JSON输出

Jackson中,我们可以使用writerWithDefaultPrettyPrinter()漂亮地打印JSON输出。 用Jackson 2.9.8测试 1.漂亮的JSON打印 1.1默认情况下,Jackson以紧凑格式打印: ObjectMapper mapper = new ObjectMapper(); Staff staff = createStaff(); St...

一名可爱的技术搬运工 3962

使用Jackson库美化JSON输出

在这个快速教程中,我们将学习如何使用Jackson库来美化(pretty print)JSON对象并将其打印到控制台或外部文件。

疯一样的码农 1150

Jackson使用攻略

jackson最完美的处理json工具

qq_58491930的博客 904

【工具】使用 Jackson 实现优雅JSON 格式化输出

无论是从服务器端返回的数据,还是本地存储的数据,JSON 格式都因其轻量级和易于解析的特点而被广泛使用。我们使用它将 JSON 字符串解析为 Java 对象,或者将 Java 对象转换为 JSON 字符串。writerWithDefaultPrettyPrinter 方法:这个方法返回一个配置了默认“漂亮打印机”的 ObjectWriter,用于将 JSON 对象格式化为漂亮的字符串。writeValueAsString 方法:该方法将 Java 对象转换为 JSON 字符串,在这个例子中是格式化的输出

发现问题,面对问题,分析问题,解决问题,总结问题 1341

JSON类库Jackson优雅序列化Java枚举类

1. 前言在Java开发中我们为了避免过多的魔法值,使用枚举类来封装一些静态的状态代码。但是在将这些枚举的意思正确而全面的返回给前端却并不是那么顺利,我们通常会使用Jackson类库序列...

码农小胖哥 2577

jackson改变json值_Jackson 美化输出JSON优雅输出JSON数据,格式化输出JSON数据... ......

一下用了这么多形容词,就是怕你们找不到。Jackson 美化输出JSON优雅输出JSON数据,格式化输出JSON数据其实本站的第一个工具,也就是首页的,就是JSON格式化输出,但是增加了校验功能,以及中文提示问题所在。比如如下 JSON 少了一个“,”。好了,介绍完毕,开始走代码吧。Jackson 格式化输出JSON 代码说明(对象)我们一般输出就是普通的toString输出。如下代码:D...

weixin_36028920的博客 506

优雅的返回json数据之Jackson常用注解介绍

优雅的返回json数据之Jackson常用注解介绍 一、Jackson简介 1. Jackson可以用来干嘛? Jackson 是一个能够将java对象序列化为JSON字符串,也能够将JSON字符串反序列化为java对象的框架。 2. Json解析器 Jackson提供了两种不同的JSON解析器: ObjectMapper: 把JSON解析到自定义的Java类中,或者解析到一个Jackson指定...

qq_40151840的博客 1211

Jackson实现JSON格式化输出

在某些情况下我们希望JSON按照一个比较友好的格式换行输出,不要都挤在一起,可以使用JACKSON实现。 引入Jackson &lt;dependency&gt; &lt;groupId&gt;com.fasterxml.jackson.core&lt;/groupId&gt; &lt;artifactId&gt;jackson-databind&lt;/artifactI...

文若书生的专栏 1万+

Jackson空值序列化优化:打造优雅JSON响应

本文介绍了一套基于Jackson的自定义空值序列化方案,通过类型感知的空值处理器优化JSON响应。核心组件包括:1)BeanSerializerModifier作为序列化总指挥,根据属性类型智能分配空值序列化器;2)ArrayJsonSerializer等针对不同类型(数组、字符串、数字等)的空值处理策略,如空数组返回[]而非null。该方案具有类型智能感知、条件性覆盖和强扩展性等特点,能有效解决API开发中空值处理的痛点,构建出健壮优雅JSON响应结构。

兮动人 1018

深入解析 Jackson @JsonView:优雅控制 JSON 序列化

@JsonView视图控制

weixin_52238787的博客 1066

jackson 字符串转json_这些Jackson用法你都会吗(上篇)

Jackson是Java语言中的一个JSON类库。性能良好,同时拥有高度可扩展的API等都是Jackson的亮点。参考下图(时间参考本文发布时间),可以看到在Jackson在主流JSON类库中的使用相当广泛(其中也有部分得益于SpringMVC将其作为默认的Json消息转换器)。接下来赶紧进入主题吧,看看本文主要介绍的Jackson用法你都会吗?不同JSON类库使用情况时间相关配...

weixin_39801158的博客 2928

SpringBoot中如何优雅地个性化定制Jackson

下面,我们将了解如何自定义 Spring Boot 使用的默认ObjectMapper。@BeanSpringBoot 将自动注册com.fasterxml.jackson.databind.Module类型的任何 bean。在本文中,我们了解了在使用 SpringBoot 时配置 JSON 序列化选项的几种方法。我们看到了两种不同的方法:配置默认选项或覆盖默认配置。

tangjieqing的博客 999

Jackson 转换JSON,SpringMVC ajax 输出,当值为null或者空不输出字段@JsonInclude

当我们提供接口的时候,  Ajax  返回的时候,当对象在转换  JSON  (序列化)的时候,值为Null 或者为“”的字段还是输出来了。看上去不优雅。 现在我叙述三种方式来控制这种情况。 注解的方式( @JsonInclude(JsonInclude.Include.NON_EMPTY)) 通过@JsonInclude 注解来标记,但是值的可选项有四类。 Include.Include...

fygkchina的专栏 1086

Jackson:Java生态中的JSON处理之王

Jackson是Java生态中最强大的JSON处理库,提供高性能的序列化和反序列化功能。文章介绍了Jackson的核心组件、基础使用方法、常用注解(如@JsonProperty、@JsonIgnore等),以及自定义序列化器、复杂结构处理等高级特性。还分享了性能优化技巧、常见问题解决方案,以及Spring Boot中的集成配置。掌握Jackson能显著提升Java项目的JSON处理效率,是开发者必备的核心技能。

2501_93501559的博客 938

json解析之fastjsonjackson使用对比

fastjson是由国内的阿里推出的一种json处理器,由java语言编写,无依赖,不需要引用额外的jar包,能直接运行在jdk环境中,它的解析速度是非常之快的,目前超过了所有json库。提示:以下是引用fastjson的方法,数据未涉及到私密信息。

以茉萱的博客 2644
上一篇: Java基本数据类型
aiu43551
博客等级 码龄11年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值