fastjson处理springBoot中json对象的日期数据以及springBoot的json对象的使用

步骤一:在pom.xml中导入

</dependency>
<!-- mvc,aop的依赖包。SpringBoot导进来的所有包都是通过这个依赖导进来的,体现maven的依赖性 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <!-- 由于我们在上面指定了parent,这里就不需要指定版本号 -->
</dependency>
  <!--处理springboot的json数据中日期的依赖-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.15</version>
</dependency>

步骤二:在实体类中使用 @JSONField(format = “日期格式”)

将该实体类命名为:Users

package com.qf.entity;

import com.alibaba.fastjson.annotation.JSONField;

import java.text.Format;
import java.util.Date;

public class Users {
    private Integer userid;
    private String username;
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;

    public Users(Integer userid, String username, Date birthday) {
        this.userid = userid;
        this.username = username;
        this.birthday = birthday;
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

步骤三:在启动类中继承WebMvcConfigurerAdapter类,重写configureMessageConverters()方法。

将该启动类命名为:Test1。注意该类一定要定义在controller类的父包里,因为controller中含有RestController注解,只有在父包中才能扫描到

package com.qf;

        import com.alibaba.fastjson.serializer.SerializerFeature;
        import com.alibaba.fastjson.support.config.FastJsonConfig;
        import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
        import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        import org.springframework.http.converter.HttpMessageConverter;
        import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

        import java.util.List;

@SpringBootApplication//声明这是springBoot的启动类。该启动类必须放在要启动的类(即含有@RestController)的父包里。不然会运行不成功
public class Test1 extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {//无返回值方法
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();//创建 FastJsonHttpMessageConverter对象
        FastJsonConfig config = new FastJsonConfig();//创建FastJsonConfig对象
        config.setSerializerFeatures(SerializerFeature.PrettyFormat);//设置格式的参数,SerializerFeature是一个枚举,里面有很多参数
       converter.setFastJsonConfig(config);
       converters.add(converter);

    }
    public static void main(String[] args) {
        SpringApplication.run(Test1.class, args);//固定格式,Test1为本类类名。启动controller类,相当于SSM中启动Tomcat的步骤
    }


}

步骤四:定义controller层,处理前台发的请求

package com.qf.controller;


import com.qf.entity.Users;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.Date;


//RestController将方法返回结果转换成json格式并创建当前类对象。
@RestController//RestController注解等价于@ResponseBody+@Controller;ResponseBody将方法返回结果转换成json格式,Controller用于创建当前类对象,但如果依然想跳转页面,仍可单独使用Controller。
public class TestController {
    @RequestMapping("/getUsers")
    public Users getUsers(HttpServletResponse response){
        response.setContentType("text/html;charset=utf-8");//解决页面乱码问题。也可考虑用@RequestMapping(value = "/", produces = "application/json; charset=utf-8")方式解决
        Users users=new Users(1,"张三",new Date());
        return users;//因为@RestController修饰,此时返回json对象。页面显示效果{ "birthday":"2019-10-09 20:15:31", "userid":1, "username":"张三" }
    }

}




springboot类中的注解一个都不能少
该案例框架结构图:
在这里插入图片描述


此案例重点代码片段:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

特别注释:
步骤三中重写的方法也可以被这个方法代替,其他不用改:都是设置日期的

   //日期转换方式2
    @Bean
    public HttpMessageConverters a1(){
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        FastJsonConfig config = new FastJsonConfig();//创建FastJsonConfig对象
        config.setSerializerFeatures(SerializerFeature.PrettyFormat);//设置格式的参数,SerializerFeature是一个枚举,里面有很多参数
        converter.setFastJsonConfig(config);
        HttpMessageConverter converters=(HttpMessageConverter)converter;
        return new HttpMessageConverters(converters);//页面得到的结果:{ "birthday":"2019-10-09 20:38:06", "userid":1, "username":"张三" }

    }



后端json实体类日期处理
JsonFormat,前提是导入了jackson包并且 在spring.xml中加入了 < mvc:annotation-driven></mvc:annotation-driven>声明,具体看ssm整合
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSONField是fastjson提供的注解,用于序列化和反序列化Java对象JSON字符串之间的转换。在Spring Boot,可以使用该注解将JSON字符串转换为Java对象或将Java对象序列化为JSON字符串。 以下是使用JSONField的示例: 1. 导入fastjson的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> ``` 2. 在Java对象使用JSONField注解: ```java public class User { private String name; @JSONField(name = "user_age") private Integer age; // getter and setter } ``` 在上面的示例,name属性使用默认的序列化和反序列化方式,而age属性使用@JSONField注解指定了序列化和反序列化时使用JSON属性名。 3. 在Controller使用JSONField注解: ```java @RestController public class UserController { @PostMapping("/user") public String addUser(@RequestBody User user) { // 处理请求 return "success"; } } ``` 在上面的示例,@RequestBody注解指定请求体使用JSON格式,Spring Boot自动将请求体JSON字符串反序列化成Java对象。如果Java对象的属性名与JSON字符串的属性名不一致,可以使用@JSONField注解指定属性名。 4. 将Java对象序列化为JSON字符串: ```java public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") Long id) { User user = userService.getUserById(id); return JSON.toJSONString(user); } } ``` 在上面的示例使用JSON.toJSONString方法将Java对象序列化成JSON字符串。如果Java对象的属性名与JSON字符串的属性名不一致,可以使用@JSONField注解指定属性名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值