简介:介绍常用json框架和注解的使用,自定义返回json结构和格式
1、常用框架 阿里 fastjson,谷歌gson等
JavaBean序列化为Json,性能:Jackson > FastJson > Gson > Json-lib 同个结构
Jackson、FastJson、Gson类库各有优点,各有自己的专长
空间换时间,时间换空间
2、jackson处理相关自动
指定字段不返回:@JsonIgnore
指定日期格式:@JsonFormat(pattern="yyyy-MM-dd hh:mm:ss",locale="zh",timezone="GMT+8")
空字段不返回:@JsonInclude(Include.NON_NUll)
指定别名:@JsonProperty
main方法
package net.xdclass.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication //一个注解顶下面3个
//@SpringBootConfiguration
//@EnableAutoConfiguration
//@ComponentScan
public class XdclassApplication {
public static void main(String[] args) {
SpringApplication.run(XdclassApplication.class, args);
}
}
控制器:
package net.xdclass.demo.controller;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import net.xdclass.demo.domain.User;
import org.springframework.web.bind.annotation.*;
//@RestController返回json格式
//就不需要每个方法都写@ResponseBody
//@RestController=@Controller+@ResponseBody
@RestController
//自定义控制器访问名称
@RequestMapping("/sample")
public class SampleController {
/**
* 测试json
* @return
*/
@GetMapping("test_json")
public Object testJson(){
return new User(11,"abcddf","18302088970",new Date());
}
}
User类:
package net.xdclass.demo.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Date;
public class User {
private int age;
@JsonIgnore//指定字段不返回给前端
private String pwd;
@JsonProperty("account")//指定别名(关键字段)
@JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回
private String phone;
//指定日期格式
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "zh",timezone = "GMT+8")
private Date createTime;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public User(){
super();
}
/**
* 通过Geberate(按快捷键Alt+Insert)-->Constructor生成构造方法
* @param age
* @param pwd
* @param phone
* @param createTime
*/
public User(int age, String pwd, String phone, Date createTime) {
super();
this.age = age;
this.pwd = pwd;
//this.phone = phone;
this.createTime = createTime;
}
}