- 定义数据处理类-自定义响应数据结构
千万不要忘了getter 和 setter方法,不然会报错406
package com.example.example48.entity;
public class DataVo {
//响应业务状态
private Integer code;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
//响应消息
private String msg;
//响应中的数据
private Object data;
public DataVo(Integer code,String msg,Object data){
this.code=code;
this.msg=msg;
this.data=data;
}
public DataVo(Object data){
this.code=200;
this.msg="OK";
this.data=data;
}
public DataVo(){
}
}
- 将json结果转化为JSONResult对象
package com.example.example48.utils;
import com.example.example48.entity.DataVo;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
public class JsonResult {
//定义jackson对象
private static final ObjectMapper MAPPER=new ObjectMapper();
public static DataVo build(Integer status, String msg, Object data){
return new DataVo(status,msg,data);
}
public static DataVo ok(Object data){
return new DataVo(data);
}
public static DataVo ok(){
return new DataVo(null);
}
public static DataVo errorMsg(String msg){
return new DataVo(500,msg,null);
}
public static DataVo errorMap(Object data){
return new DataVo(501,"error",data);
}
public static DataVo errorTokenMsg(String msg){
return new DataVo(502,msg,null);
}
public static DataVo errorException(String msg){
return new DataVo(555,msg,null);
}
//将json结果转换为DataVo对象
public static DataVo formatToPojo(String jsonData,Class<?> clazz){
try{
if (clazz==null){
return MAPPER.readValue(jsonData, DataVo.class);
}
JsonNode jsonNode=MAPPER.readTree(jsonData);
JsonNode data=jsonNode.get("data");
Object obj=null;
if(clazz!=null){
if(data.isObject()){
obj=MAPPER.readValue(data.traverse(),clazz);
} else if (data.isTextual()) {
obj=MAPPER.readValue(data.asText(),clazz);
}
}
return build(jsonNode.get("status").intValue(),jsonNode.get("msg").asText(),obj);
}catch (Exception e){
return null;
}
}
//没有object对象的转化
public static DataVo format(String json){
try {
return MAPPER.readValue(json,DataVo.class);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//object是集合转化,需要转换的对象是一个list
public static DataVo formatToList(String jsonData,Class<?> clazz){
try {
JsonNode jsonNode=MAPPER.readTree(jsonData);
JsonNode data=jsonNode.get("data");
Object obj=null;
if(data.isArray()&&data.size()>0){
obj=MAPPER.readValue(data.traverse(),MAPPER.getTypeFactory().constructCollectionType(List.class,clazz));
}
return build(jsonNode.get("status").intValue(),jsonNode.get("msg").asText(),obj);
}catch (Exception e){
return null;
}
}
}
- 定义User类
package com.example.example48.model;
public class User {
public String name;
public Integer age;
public String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", password='" + password + '\'' +
'}';
}
}
- 处理数据返回
package com.example.example48.controller;
import com.example.example48.entity.DataVo;
import com.example.example48.model.User;
import com.example.example48.utils.JsonResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("user")
public class Json {
@RequestMapping("/getUser")
public DataVo getUserJson(){
User u=new User();
u.setName("cn");
u.setAge(20);
u.setPassword("cainiao");
System.out.println(u);
return JsonResult.ok(u);
}
}
- 测试结果
运行启动类,在浏览器中访问http://localhost:8080/user/getUser,返回结果如下: