前端数组对象传入SpringBoot后台项目用List接收的方法 您所在的位置:网站首页 controller接收json数组 前端数组对象传入SpringBoot后台项目用List接收的方法

前端数组对象传入SpringBoot后台项目用List接收的方法

2023-08-01 00:40| 来源: 网络整理| 查看: 265

前提注意:前端的AJAX请求要是没有设置headers里的Content-Type时会默认为application/x-www-form-urlencoded",但是你传的是Json对象,

                 而后台使用@RequestBody注解进行接收就会抛出415异常,所以在使用JSON对象时需要设置置headers里的Content-Type为application/json;

 

一.使用Gson

    Gson是google开发的一个开源Json解析库,使用十分的方便,在maven当中导入的方式为:

    步骤:注入依赖

 

com.google.code.gson gson 2.8.2常用方法:

 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.注入依赖:

net.sf.json-lib json-lib 2.4 jdk15

特别注意:如果缺少 jdk15可能会导致找不到相应的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 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 使用(推荐)  好处:场景  如果我数组里的对象a还有一个对象b,这时候我想把传进后端时作为一个字符串字段我就会先序列化b,然后再序列化a再传入后台  如果我使用方法二反序列化时,b就会成为一个对象,跟实体类字段的String类型不符,就会接收不到值,而方法三完美解决此问题

   

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有