前端數組對象傳入SpringBoot后台項目用List接收的方法


前提注意:前端的AJAX請求要是沒有設置headers里的Content-Type時會默認為application/x-www-form-urlencoded",但是你傳的是Json對象,

                 而后台使用@RequestBody注解進行接收就會拋出415異常,所以在使用JSON對象時需要設置headers里的Content-Type為application/json;charset=utf-8

 

一.使用Gson

    Gson是google開發的一個開源Json解析庫,使用十分的方便,在maven當中導入的方式為:

    步驟:注入依賴

 

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
常用方法:

 Object obj = new Object();

//Object轉Json字符串

String obstr = new Gson().toJson(object);

//Json字符串轉Object

Object object = new Gson().fromJson(obstr)

 

二.后台使用fastjson

  介紹: FastJSON是一個Java語言編寫的高性能,功能完善,完全支持http://json.org的標准的JSON庫

   使用步驟:

   1.注入依賴:

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>

特別注意:如果缺少 <classifier>jdk15</classifier>可能會導致找不到相應的Jar包,所以添加上

2.后端使用@RequestBody結合JSONObject jsonbject接收前端傳來的數組(注意:這里不能直接用JSONArrtay直接接收,要先用JSONObject 再轉成JSONArrtay,具體如下
public Response addMarkBookGisPhoto(@RequestBody JSONObject jsonbject) { // 不能直接使用JSONArray類型的參數接收前台的json數組字符串JSONObject接收,然后取出
////取出points部分對象,就是key為points的數值{points:[]}
JSONArray jsonArray = jsonbject.getJSONArray("points");
List<LinePoint> pointlist=(List)JSONArray.toCollection(jsonArray,LinePoint.class); // 轉成bean對象,就是反序列化
for (LinePoint a : pointlist) {
System.out.println(a.getSn());
}
return new Response(bookMarkServiceIface.addAirLineGisPhoto(points));
}

3.后台直接使用@RequestBody結合List<bean> 使用(推薦)
 好處:場景
 如果我數組里的對象a還有一個對象b,這時候我想把傳進后端時作為一個字符串字段我就會先序列化b,然后再序列化a再傳入后台
 如果我使用方法二反序列化時,b就會成為一個對象,跟實體類字段的String類型不符,就會接收不到值,而方法三完美解決此問題



   


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM