0
点赞
收藏
分享

微信扫一扫

【Json】json在SpringBoot中的格式转换

朱悟能_9ad4 2022-02-14 阅读 133



文章目录


  • ​​响应对象json​​

  • ​​@RestController自动返回json​​
  • ​​@ResponseBody+@Controller 组合返回json​​

  • ​​hutool中json对象转换​​
  • ​​在pom.xml 添加 阿里巴巴json jar包​​
  • ​​封装json在entiy的body返回msg​​

  • ​​JsonResponseServlet​​
  • ​​controller​​



响应对象json

@RestController自动返回json

【Json】json在SpringBoot中的格式转换_spring boot

/**
* json 三种实现方法
* 1 @RestController自动返回json
*/
@GetMapping("/json")
public Student getjson() {
Student student = new Student("bennyrhys",158
);
return student;
}

@ResponseBody+@Controller 组合返回json

【Json】json在SpringBoot中的格式转换_json对象_02

//@RestController
@Controller
// 类名上方


@GetMapping("/json")
@ResponseBody
public Student getjson() {
Student student = new Student("bennyrhys",158
);
return student;
}

hutool中json对象转换

​​https://www.imooc.com/article/300345​​

在pom.xml 添加 阿里巴巴json jar包

【Json】json在SpringBoot中的格式转换_json对象_03

//@RestController
@Controller
// 类名上方


@GetMapping("/fastjson")
public void fastjson(HttpServletResponse response){
Student student = new Student("bennyrhys",158);
String data = JSON.toJSONString(student);


try {
sendJsonData(response, data);
} catch (IOException e) {
e.printStackTrace();
}

}

protected void sendJsonData(HttpServletResponse response, String data) throws IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println(data);
out.flush();
out.close();
}

fastjson深入理解

fastJson对于json格式字符串的解析主要用到了一下三个类:

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。


toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。



允许转换预先存在的无法修改的对象(只有class、无源代码)。
Java泛型的广泛支持。
允许对象的自定义表示、允许自定义序列化类。
支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。



JSONObject 当成一个 Map<String,Object> 来看
JSONArray当成一个 List 来看
JSON.toString(Object)----> return String
JSON.parse(String)----->return Object


String 和 JsonObject 和 JsonArray之间转化

1、String转JSONObject 或 JSONArray

JSONObject jSONObject = JSONObject.parseObject(String);

JSONArray jsonArray= JSONArray.parseArray(String);

2、JSONObject中的数组提取为JSONArray

提取Result对应的数组

JSONArray jsonArray= jsonObject.getJSONArray(“Result”);

3、JSONArray提取为JSONObject

JSONObject jsonObject = jsonArray.getJSONObject(0);

【Json】json在SpringBoot中的格式转换_json对象_044、JSONObject获取value

1、object.getString("key")

2、object.get("key")

JSONArray jsonArray= jsonObject.getJSONArray(“Result”);

JSONObject jsonObject = jsonArray.getJSONObject(0);

封装json在entiy的body返回msg

ResponseEntity可以定义返回的HttpStatus(状态码)和HttpHeaders(消息头:请求头和响应头)

HttpStatus(状态码)https://blog.csdn.net/csdn1844295154/article/details/78980174

HttpHeaders(消息头:请求头和响应头)https://www.cnblogs.com/honghong87/articles/6941436.html

具体查看这些内容的用法可以参考https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition

ResponseEntity返回body

JsonResponseServlet

import java.io.Serializable;

public class JsonResponse<T> implements Serializable {
private Integer code;
private String msg;
private T result;

public JsonResponse() {
}

public JsonResponse(Integer code, String msg, T result) {
this.code = code;
this.msg = msg;
this.result = result;
}

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 T getResult() {
return result;
}

public void setResult(T result) {
this.result = result;
}

public static class JsonResponseUtil {
public static JsonResponse<Object> ok() {
return ok(null);
}

public static <T> JsonResponse<T> ok(T result) {
return new JsonResponse<>(0, "", result);
}

public static JsonResponse<Object> error(Integer code) {
return error(code, "error!");
}

public static JsonResponse<Object> error(String msg) {
return error(-1, msg);
}

public static JsonResponse<Object> error(Integer code, String msg) {
return new JsonResponse<>(code, msg, null);
}
}
}

controller

return ResponseEntity.ok(JsonResponse.JsonResponseUtil.ok(source));



举报

相关推荐

0 条评论