溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式

發(fā)布時(shí)間:2020-11-16 15:21:45 來(lái)源:億速云 閱讀:7044 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

@RestController自動(dòng)返回json

在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式

/**
   * json 三種實(shí)現(xiàn)方法
   * 1 @RestController自動(dòng)返回json
   */
  @GetMapping("/json")
  public Student getjson() {
    Student student = new Student("bennyrhys",158
    );
    return student;
  }

@ResponseBody+@Controller 組合返回json

在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式

//@RestController
  @Controller
// 類名上方


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

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

在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式

//@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對(duì)于json格式字符串的解析主要用到了一下三個(gè)類:

JSON:fastJson的解析器,用于JSON格式字符串與JSON對(duì)象及javaBean之間的轉(zhuǎn)換。
JSONObject:fastJson提供的json對(duì)象。
JSONArray:fastJson提供json數(shù)組對(duì)象。

toJSONString() 和 parseObject() 方法來(lái)將 Java 對(duì)象與 JSON 相互轉(zhuǎn)換。調(diào)用toJSONString方 法即可將對(duì)象轉(zhuǎn)換成 JSON 字符串,parseObject 方法則反過(guò)來(lái)將 JSON 字符串轉(zhuǎn)換成對(duì)象。

允許轉(zhuǎn)換預(yù)先存在的無(wú)法修改的對(duì)象(只有class、無(wú)源代碼)。
Java泛型的廣泛支持。
允許對(duì)象的自定義表示、允許自定義序列化類。
支持任意復(fù)雜對(duì)象(具有深厚的繼承層次和廣泛使用的泛型類型)。

JSONObject 當(dāng)成一個(gè) Map<String,Object> 來(lái)看
JSONArray當(dāng)成一個(gè) List 來(lái)看
JSON.toString(Object)----> return String
JSON.parse(String)----->return Object

String 和 JsonObject 和 JsonArray之間轉(zhuǎn)化
https://www.jb51.net/article/199602.htm

1、String轉(zhuǎn)JSONObject 或 JSONArray

JSONObject jSONObject = JSONObject.parseObject(String);
JSONArray jsonArray= JSONArray.parseArray(String);

2、JSONObject中的數(shù)組提取為JSONArray
提取Result對(duì)應(yīng)的數(shù)組

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

3、JSONArray提取為JSONObject

JSONObject jsonObject = jsonArray.getJSONObject(0);

在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式

4、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(狀態(tài)碼)和HttpHeaders(消息頭:請(qǐng)求頭和響應(yīng)頭)

HttpStatus(狀態(tài)碼)https://blog.csdn.net/csdn1844295154/article/details/78980174

HttpHeaders(消息頭:請(qǐng)求頭和響應(yīng)頭)https://www.cnblogs.com/honghong87/articles/6941436.html

具體查看這些內(nèi)容的用法可以參考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));

上述內(nèi)容就是在SpringBoot中如何實(shí)現(xiàn)轉(zhuǎn)換json的格式,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI