前言:本文章重点在于第三步json工具类,这个类对于转换获取来的json文件有很大的帮助,再有注意的一点为前台向后台的传输方式要改为aplication/json格式,后台controller接收时,参数要加上@RequestBody注解
1、在pom文件中引入fastJson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
2、将所有的controller改为接收json数据,将json文件转换成相应的数据类型
package com.jian.myspringboot.demo.controller;
import com.alibaba.fastjson.JSON;
import com.jian.myspringboot.core.model.Message;
import com.jian.myspringboot.core.utils.JsonTools;
import com.jian.myspringboot.core.utils.MessageUtils;
import com.jian.myspringboot.demo.model.UserInfo;
import com.jian.myspringboot.demo.service.IUserinfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @program: mySpringBoot
* @description: 用户controller
* @author: xiaoQian
* @create: 2021-11-22 20:08
**/
@RestController
@RequestMapping("/user")
public class UserInfoController {
@Resource
private IUserinfoService userinfoService;
/**
* 根据id查询用户信息
* @param
* @return
*/
@PostMapping("/queryUserById")
public UserInfo queryUserById(@RequestBody String jsonData){
Long id = Long.parseLong(JsonTools.json2MapString(jsonData).get("id"));
return userinfoService.queryUserById(id);
}
/**
* 查询所有用户信息
* @return
*/
@PostMapping("/queryAllUser")
public List<UserInfo> queryAllUser(){
return userinfoService.queryAllUser();
}
/**
* 新增用户信息
* @param jsonData 用户名称
* @return 消息实体
*/
@PostMapping(value = "/addUserInfo")
public Message addUserInfo(@RequestBody String jsonData){
UserInfo userInfo = JsonTools.json2Bean(jsonData,UserInfo.class);
System.out.println(userinfoService.addUserInfo(userInfo));
return MessageUtils.assembleMessage("0000","新增数据成功");
}
/**
* 批量新增用户信息
* @param jsonData
* @return
*/
@PostMapping("/addBatchUserInfo")
public Message addBatchUserInfo(@RequestBody String jsonData){
Map<String,Object> map = JsonTools.json2MapObject(jsonData);
List<UserInfo> userNameList = (List<UserInfo>)map.get("userNameList");
userinfoService.addBatchUserInfo(userNameList);
return MessageUtils.assembleMessage("0000","新增数据成功");
}
}
3、编写json处理工具类(此工具类保留main方法,方便调试)
package com.jian.myspringboot.core.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.jian.myspringboot.demo.model.UserInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author:xiaoqian
* @Date: Created in 16:18 2021/11/29
* @Description: json处理工具类
*/
public class JsonTools {
// 测试main方法
public static void main(String[] args) {
/* ********************* map转json字符串 *********************/
Map<String,String> map = new HashMap<>();
map.put("id","11");
map.put("userName","22");
map.put("passWord","33");
map.put("dd","44");
map.put("ee","55");
String json = mapString2Json(map);
/* ********************* json字符串转map集合 *********************/
Map<String,String> json2Map = json2MapString(json);
/* ********************* json字符串转换成对象 *********************/
UserInfo userInfo = json2Bean(json, UserInfo.class);
/* ********************* 对象转换成json *********************/
bean2Json(userInfo);
/* ********************* List集合转换成json字符串 *********************/
List<Object> list = new ArrayList<>();
List<UserInfo> userInfoList = new ArrayList<>();
userInfoList.add(userInfo);
userInfoList.add(userInfo);
list.add(map);
list.add(1);
list.add("xiaoQian");
list.add(userInfo);
list.add(userInfoList);
String list2Json = list2Json(list);
/* ********************* json转List *********************/
List<Object> json2List = json2List(list2Json);
/* ********************* json字符串转换成List集合 (需要实体类) *********************/
List<UserInfo> userInfos = json2List(list2Json(json2List.get(4)),UserInfo.class);
UserInfo kk = userInfos.get(0);
/* *********************Map<String,Object>转json**********************/
Map<String,Object> objectMap = new HashMap<>();
List<UserInfo> ul = new ArrayList<>();
Map<String,String> stringMap = new HashMap<>();
UserInfo ui = new UserInfo();
ui.setId(1L);
ui.setUserName("111");
ui.setPassWord("111pw");
UserInfo ui1 = new UserInfo();
ui1.setId(2L);
ui1.setUserName("222");
ui1.setPassWord("222pw");
ul.add(ui);
ul.add(ui1);
stringMap.put("s1","s1111");
stringMap.put("s2","s2222");
objectMap.put("aa","111");
objectMap.put("ul",ul);
objectMap.put("stringMap",stringMap);
mapObject2Json(objectMap);
/* *********************json转Map<String,Object>**********************/
Map<String,Object> objectMap1 = json2MapObject(mapObject2Json(objectMap));
System.out.println(objectMap1.get("aa"));
List<UserInfo> userInfoList1 = json2List(list2Json(objectMap1.get("ul")),UserInfo.class);
System.out.println(userInfoList1.get(0).getId());
}
/**
* json字符串转map集合(String)
* @param jsonStr
* @return
*/
public static HashMap<String, String> json2MapString(String jsonStr){
return JSON.parseObject(jsonStr, new HashMap<String, String>().getClass());
}
/**
* json字符串转map集合(Object)
* @param jsonStr
* @return
*/
public static HashMap<String, Object> json2MapObject(String jsonStr){
return JSON.parseObject(jsonStr, new HashMap<String, Object>().getClass());
}
/**
* map转json字符串(string)
* @param map
* @return
*/
public static String mapString2Json(Map<String, String> map){
String jsonStr = JSON.toJSONString(map);
return jsonStr;
}
/**
* map转json字符串(object)
* @param map
* @return
*/
public static String mapObject2Json(Map<String, Object> map){
String jsonStr = JSON.toJSONString(map);
return jsonStr;
}
/**
* json字符串转换成对象
* @param jsonString
* @param cls
* @return
*/
public static <T> T json2Bean(String jsonString, Class<T> cls){
T t = null;
try {
t = JSON.parseObject(jsonString,cls);
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
/**
* 对象转换成json字符串
* @param obj
* @return
*/
public static String bean2Json(Object obj){
return JSON.toJSONString(obj);
}
/**
* json字符串转换成List集合
* (需要实体类)
* @param jsonString
* @return
*/
public static <T> List<T> json2List(String jsonString, Class cls){
List<T> list = null;
try {
list = JSON.parseArray(jsonString, cls);
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* List集合转换成json字符串
* @param obj
* @return
*/
public static String list2Json(Object obj){
return JSONArray.toJSONString(obj, true);
}
/**
* json转List
* (不需要实体类)
* @param jsonStr
* @return
*/
public static JSONArray json2List(String jsonStr){
return JSON.parseArray(jsonStr);
}
}
4、相对应的service接口定义
package com.jian.myspringboot.demo.service;
import com.jian.myspringboot.demo.model.Department;
import com.jian.myspringboot.demo.model.UserInfo;
import java.util.List;
public interface IUserinfoService {
/**
* 根据id查询用户信息
* @param userInfoId json信息
* @return
*/
UserInfo queryUserById(Long userInfoId);
/**
* 查询所有用户
* @return 用户信息集合
*/
List<UserInfo> queryAllUser();
/**
* 新增单个用户信息
* @param userInfo 用户信息实体
* @return 新增数据id
*/
Long addUserInfo(UserInfo userInfo);
/**
* 批量新增用户信息
* @param userInfos 用户实体集合
* @return 新增数据id集合
*/
int addBatchUserInfo(List<UserInfo> userInfos);
}
5、相对应的service实现
package com.jian.myspringboot.demo.service.impl;
import com.alibaba.fastjson.JSON;
import com.jian.myspringboot.core.utils.JsonTools;
import com.jian.myspringboot.demo.dao.UserInfoMapper;
import com.jian.myspringboot.demo.model.UserInfo;
import com.jian.myspringboot.demo.service.IUserinfoService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @program: mySpringBoot
* @description: 业主信息Service
* @author: xiaoQian
* @create: 2021-11-22 20:39
**/
@Service
public class UserInfoService implements IUserinfoService {
@Resource
private UserInfoMapper userInfoMapper;
@Override
public UserInfo queryUserById(Long userInfoId) {
return userInfoMapper.queryUserById(userInfoId);
}
@Override
public List<UserInfo> queryAllUser() {
return userInfoMapper.queryAllUser();
}
@Override
public Long addUserInfo(UserInfo userInfo) {
return userInfoMapper.insertUserInfo(userInfo);
}
@Override
public List<Long> addBatchUserInfo(List<UserInfo> userInfos) {
return userInfoMapper.batchInsertUserInfo(userInfos);
}
}
6、@RestController注解包含@Controller和@ResponseBody这两个注解,所以返回的数据会转为json