zoukankan      html  css  js  c++  java
  • Spring Boot 返回 JSON 数据,一分钟搞定!

    如何返回 JSON 数据?

    在 Spring Boot 中返回 JSON 数据很简单,如下几步。

    加入依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.4.RELEASE</version>
    </parent>

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    除了 Spring Boot 必须自带的 parent 依赖外,仅仅只需要加入这个 spring-boot-starter-web 包即可,它会自动包含所有 JSON 处理的包,如下图所示。

    这个插件感谢知识星球球友的分享,简单不错,点击文章底部的阅读原文,可以加入一起学习。

    返回 JSON 数据格式定义

    1)定义返回方式

    在 Controller 类上面用 @RestController 定义或者在方法上面用 @ResponseBody 定义,表明是在 Body 区域输出数据。

    下面是使用示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @RestController
    public class JsonTest {

    @GetMapping(value = "/user/{userId}")
    public User getUserInfo(@PathVariable("userId") String userId) {
    User user = new User("Java技术栈", 18);
    user.setId(Long.valueOf(userId));
    return user;
    }

    }
    2)自定义输出格式

    上面的方法直接返回对象,对象会自动转换为 JSON 格式,不过是默认的标签,可以通过以下标签进行自定义 JSON 格式。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class User {

    @JsonProperty("user-name")
    private String userName;

    private Long id;

    private Integer age;

    @JsonIgnore
    private String address;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String memo;

    // get set 略

    }

    程序输出:

    1
    {"id":1,"age":18,"user-name":"Java技术栈"}

    上面演示了几个常用的注解。

    @JsonProperty: 可用来自定义属性标签名称;

    @JsonIgnore: 可用来忽略不想输出某个属性的标签;

    @JsonInclude: 可用来动态包含属性的标签,如可以不包含为 null 值的属性;

    更多注解可以查看这个包:

    如何手动完成对象 和 Json 的互转?

    jackson-databind 包里面有一个 com.fasterxml.jackson.databind.ObjectMapper 类可以完成对象和 Json 数据的互转,下面是一个简单的合作示例。

    1
    2
    3
    4
    5
    ObjectMapper objectMapper = new ObjectMapper();

    String userJsonStr = objectMapper.writeValueAsString(user);

    User jsonUser = objectMapper.readValue(userJsonStr, User.class);

    更多相关的使用及原理可以查看这个包。

    http://www.javastack.cn/article/2018/spring-boot-response-json-data/

  • 相关阅读:
    在 Flink 算子中使用多线程如何保证不丢数据?
    日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践
    Java编码技巧之高效代码50例
    codeforces 1284D. New Year and Conference(线段树)
    codeforces 1284C. New Year and Permutation(组合数学)
    codeforces 1284B. New Year and Ascent Sequence(二分)
    Codeforces Hello2020 A-E简要题解
    POJ2456 Aggressive cows(二分)
    POJ3122 Pie(二分)
    POJ3258 River Hopscotch(二分最大化最小值)
  • 原文地址:https://www.cnblogs.com/panchanggui/p/10764507.html
Copyright © 2011-2022 走看看