springboot(9)- 整合web開發(1)- json 解析

1 springboot 默認 json 解析方案

在這裏插入圖片描述

1.1 返回 json數據

  • 實體類
    在這裏插入圖片描述

  • Controller

//@Controller
@RestController
public class UserController {

    @GetMapping("/getAll")
   // @ResponseBody
    public List<User> getAll() {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId(i);
            user.setUsername("Mike-" + i);
            user.setAddress("New York-" + i);
            users.add(user);
        }
        return users;
    }
}

在這裏插入圖片描述

1.2 HttpMessageConverter

  • 將服務端返回的對象序列化成 json字符串
  • 將前端傳來的 json 字符串反序列化爲 java 對象

  • 所有的 json 生成都離不開相關的 HttpMessageConverter
  • SpringMVC 自動配置了 JacksonGsonHttpMessageConverter。springboot 又對此做了自動化的配置。所以如果用戶使用 jackson 和 gson 的話,沒有其他額外的配置,只需要添加依賴。

在這裏插入圖片描述
在這裏插入圖片描述

1.3 演示

  • 實體類
    在這裏插入圖片描述

在這裏插入圖片描述

  • 自定義轉換類
package com.tzb.config;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;

import java.text.SimpleDateFormat;
import java.util.Date;

@Configuration
public class WebMvcConfig {

    @Bean
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper om = new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
        converter.setObjectMapper(om);
        return converter;

    }
}


  • Controller
//@Controller
@RestController
public class UserController {

    @GetMapping("/getAll")
   // @ResponseBody
    public List<User> getAll() {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId(i);
            user.setUsername("Mike-" + i);
            user.setAddress("New York-" + i);
            user.setBirthday(new Date());
            users.add(user);
        }
        return users;
    }
}

在這裏插入圖片描述


1.3.1 修改

在這裏插入圖片描述

  • 自定義配置
@Configuration
public class WebMvcConfig {

  /*  @Bean
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper om = new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
        converter.setObjectMapper(om);
        return converter;

    }*/

    @Bean
    ObjectMapper objectMapper(){
        ObjectMapper om = new ObjectMapper();
        om.setDateFormat(new SimpleDateFormat("yyyy/MM/dd"));
        return om;
    }
    
}

在這裏插入圖片描述

2 使用 Gson 處理 json

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

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>

  • Controller
//@Controller
@RestController
public class UserController {

    @GetMapping("/getAll")
   // @ResponseBody
    public List<User> getAll() {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId(i);
            user.setUsername("Mike-" + i);
            user.setAddress("New York-" + i);
            user.setBirthday(new Date());
            users.add(user);
        }
        return users;
    }
}

在這裏插入圖片描述
在這裏插入圖片描述

2.1 自定義日期格式

package com.tzb.config;

import com.google.gson.GsonBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.json.GsonHttpMessageConverter;

@Configuration
public class WebMvcConfig {

    @Bean
    GsonHttpMessageConverter gsonHttpMessageConverter(){
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converter.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd").create());
        return converter;
    }

}

在這裏插入圖片描述

2.1.1 另一種方法

在這裏插入圖片描述

@Configuration
public class WebMvcConfig {

    /* @Bean
     GsonHttpMessageConverter gsonHttpMessageConverter(){
         GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
         converter.setGson(new GsonBuilder().setDateFormat("yyyy/MM/dd").create());
         return converter;
     }
 */
    @Bean
    Gson gson() {
        return new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
            
    }

}

在這裏插入圖片描述

3 fastjson

  • 依賴
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-json</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.72</version>
        </dependency>

@Configuration
public class WebMvcConfig {

    @Bean
    FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
        FastJsonHttpMessageConverter conerter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();
        config.setDateFormat("yyyy-MM-dd");
        conerter.setFastJsonConfig(config);
        return conerter;
    }

}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章