上代码:
NeElement实体:
package com.sunwave.grouping.domain;
import javax.persistence.*;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//import com.sunwave.common.alarm.AlmAlarmlog;
//import com.sunwave.common.alarm.AlmAlarmlogHistory;
//import com.sunwave.common.alarm.AlmAlarmlogMask;
//import com.sunwave.common.platform.NeCompany;
/**
* @author lfw
* @date 2020年8月3日
* @time 下午6:44:54
*
*/
@Entity
@Table(name = "ne_element")
public class NeElement extends BaseRowModel implements Serializable{
/**
* extends BaseRowModel
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long neNeid; //设备唯一标识
@ExcelProperty(value="设备连接URL")
private String coonReqUrl; //设备连接URL
@ExcelProperty(value="设备序列号")
private String serialNumber; //设备序列号
@ExcelProperty(value="设备IP")
private String deviceIp; //设备IP
@ExcelProperty(value="modelId")
private String modelId;//modelName对应的id
@ExcelProperty(value="描述")
private String description;//描述
@ExcelProperty(value="制造商")
private String manufacturer;//制造商
@ExcelProperty(value="软件版本")
private String softwareVersion;//软件版本
@ExcelProperty(value="创建时间")
private Date creationTime;//创建时间
@ExcelProperty(value="lastBootstrapTime")
private Date lastBootstrapTime;
@ExcelProperty(value="最后连接时间")
private Date lastConnTime;//最后连接时间
@ExcelProperty(value="更新时间")
private Date updateTime;//更新时间
@ExcelProperty(value="oui")
private String oui;//oui
@ExcelProperty(value="product")
private String product;
@ExcelProperty(value="是否需要认证")
private Boolean authRequirement;//是否需要认证
@ExcelProperty(value="dialectIP")
private String dialectIP;
@ExcelProperty(value="更新用户")
private String updateUser;//更新用户
@ExcelProperty(value="mac地址")
private String macAddress;//mac地址
@ExcelProperty(value="在线状态")
private Integer onlineStatus;//在线状态
@ExcelProperty(value="会话状态")
private Integer sessionStatus;//会话状态
@ExcelIgnore
@ManyToMany(cascade=CascadeType.ALL, mappedBy = "elementList")
@JsonIgnore
private List<DeviceGroup> deviceGroupList=new ArrayList<DeviceGroup>();
public List<DeviceGroup> getDeviceGroupList() {
return deviceGroupList;
}
public void setDeviceGroupList(List<DeviceGroup> deviceGroupList) {
this.deviceGroupList = deviceGroupList;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getSoftwareVersion() {
return softwareVersion;
}
public void setSoftwareVersion(String softwareVersion) {
this.softwareVersion = softwareVersion;
}
public Date getLastConnTime() {
return lastConnTime;
}
public void setLastConnTime(Date lastConnTime) {
this.lastConnTime = lastConnTime;
}
public String getModelId() {
return modelId;
}
public void setModelId(String modelId) {
this.modelId = modelId;
}
public Long getNeNeid() {
return neNeid;
}
public void setNeNeid(Long neNeid) {
this.neNeid = neNeid;
}
public String getCoonReqUrl() {
return coonReqUrl;
}
public void setCoonReqUrl(String coonReqUrl) {
this.coonReqUrl = coonReqUrl;
}
public String getDeviceIp() {
return deviceIp;
}
public void setDeviceIp(String deviceIp) {
this.deviceIp = deviceIp;
}
public String getSerialNumber() {
return serialNumber;
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
}
public Date getCreationTime() {
return creationTime;
}
public void setCreationTime(Date creationTime) {
this.creationTime = creationTime;
}
public Date getLastBootstrapTime() {
return lastBootstrapTime;
}
public void setLastBootstrapTime(Date lastBootstrapTime) {
this.lastBootstrapTime = lastBootstrapTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getOui() {
return oui;
}
public void setOui(String oui) {
this.oui = oui;
}
public String getProduct() {
return product;
}
public void setProduct(String product) {
this.product = product;
}
public Boolean getAuthRequirement() {
return authRequirement;
}
public void setAuthRequirement(Boolean authRequirement) {
this.authRequirement = authRequirement;
}
public String getDialectIP() {
return dialectIP;
}
public void setDialectIP(String dialectIP) {
this.dialectIP = dialectIP;
}
public String getUpdateUser() {
return updateUser;
}
public void setUpdateUser(String updateUser) {
this.updateUser = updateUser;
}
public String getMacAddress() {
return macAddress;
}
public void setMacAddress(String macAddress) {
this.macAddress = macAddress;
}
public Integer getOnlineStatus() {
return onlineStatus;
}
public void setOnlineStatus(Integer onlineStatus) {
this.onlineStatus = onlineStatus;
}
public Integer getSessionStatus() {
return sessionStatus;
}
public void setSessionStatus(Integer sessionStatus) {
this.sessionStatus = sessionStatus;
}
@Override
public String toString() {
return "NeElement [neNeid=" + neNeid + ", coonReqUrl=" + coonReqUrl + ", serialNumber=" + serialNumber
+ ", deviceIp=" + deviceIp + ", modelId=" + modelId + ", description=" + description + ", manufacturer="
+ manufacturer + ", softwareVersion=" + softwareVersion + ", creationTime=" + creationTime
+ ", lastBootstrapTime=" + lastBootstrapTime + ", lastConnTime=" + lastConnTime + ", updateTime="
+ updateTime + ", oui=" + oui + ", product=" + product + ", authRequirement=" + authRequirement
+ ", dialectIP=" + dialectIP + ", updateUser=" + updateUser + ", macAddress=" + macAddress
+ ", onlineStatus=" + onlineStatus + ", sessionStatus=" + sessionStatus + ", deviceGroupList="
+ deviceGroupList + "]";
}
}
搜索辅助类1:用于根据什么条件搜索。
package com.sunwave.deviceManagement.query;
import org.springframework.data.domain.Sort;
import com.sunwave.common.dao.UUIDSupport;
public class NeElementQuery extends SearchQuery {
private String serverName;
private Long neNeid;
private String deviceIp; //设备IP
private String manufacturer;//制造商
public String getDeviceIp() {
return deviceIp;
}
public void setDeviceIp(String deviceIp) {
this.deviceIp = deviceIp;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public Long getNeNeid() {
return neNeid;
}
public void setNeNeid(Long neNeid) {
this.neNeid = neNeid;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
@Override
public Sort.Direction getDirection() {
Sort.Direction orderDirection = Sort.Direction.DESC;
if (this.getOrderDesc() != null && !"".equals(this.getOrderDesc())) {
if ("asc".equals(this.getOrderDesc().toLowerCase())) {
orderDirection = Sort.Direction.ASC;
}
}
return orderDirection;
}
@Override
public String toString() {
return "NeElementQuery [serverName=" + serverName + ", neNeid=" + neNeid + ", deviceIp=" + deviceIp
+ ", manufacturer=" + manufacturer + "]";
}
}
搜索辅助类2:用于根据什么条件搜索。
package com.sunwave.deviceManagement.query;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import com.sunwave.common.dao.UUIDSupport;
/**
* @author fuwen_li
* @date 2020年8月19日
* @time 上午11:03:41
*
*/
public class SearchQuery extends UUIDSupport {
/*关键字查询*/
private String keyword;
/*页码*/
private int pageIndex;
/*每页显示大小*/
private int pageSize;
private String orderName;
private String orderDesc;//订单说明
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
public int getPageIndex() {
if(this.pageIndex<1){
pageIndex = 0;
}
else{
pageIndex = pageIndex-1;
}
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
public String getOrderDesc() {
return orderDesc;
}
public void setOrderDesc(String orderDesc) {
this.orderDesc = orderDesc;
}
public String getOrderName(String basicName) {
if(this.orderName!=null&&!"".equals(this.orderName)) {
return this.orderName;
}else {
return basicName;
}
}
public Direction getDirection() {
Direction orderDirection = Sort.Direction.ASC;
if(this.orderDesc!=null&&!"".equals(this.orderDesc)) {
if("desc".equals(this.orderDesc.toLowerCase())){
orderDirection = Sort.Direction.DESC;
};
}
return orderDirection;
}
}
Repository层:
package com.sunwave.deviceManagement.repository;
import java.util.List;
import com.sunwave.grouping.domain.NeElement;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
@Repository
public interface NeElementRepository extends JpaRepository<NeElement, Long>, JpaSpecificationExecutor<NeElement> {
NeElement findByNeNeid(long neId);
}
service层:
package com.sunwave.deviceManagement.service;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import com.sunwave.deviceManagement.query.NeElementQuery;
import com.sunwave.grouping.domain.NeElement;
public interface NeElementService {
public Page<NeElement> findNeElementPage(NeElementQuery query);//分页查询
/* 根据id获取用户信息 */
public NeElement getNeElement(Long id) throws Exception;
}
service的实现层serviceImpl:
package com.sunwave.deviceManagement.service.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.JoinType;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import com.sunwave.grouping.domain.NeElement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;
import com.sunwave.deviceManagement.query.NeElementQuery;
import com.sunwave.deviceManagement.repository.NeElementRepository;
import com.sunwave.deviceManagement.service.NeElementService;
import com.sunwave.grouping.domain.DeviceGroup;
import com.sunwave.grouping.domain.NeElement;
import com.sunwave.grouping.service.DeviceGroupService;
@Service
public class NeElementServiceImpl implements NeElementService{
@Autowired
NeElementRepository neElementRepository;
@Autowired
DeviceGroupService deviceGroupService;
@Override
public Page<NeElement> findNeElementPage(NeElementQuery query) {
Sort sort = new Sort(query.getDirection(), query.getOrderName("neNeid"));
Specification<NeElement> specification = getWhereClause(query);
PageRequest page = new PageRequest(query.getPageIndex(), query.getPageSize(), sort);
Page<NeElement> all = neElementRepository.findAll(specification, page);
return all;
}
private Specification<NeElement> getWhereClause(final NeElementQuery searchquery) {
return new Specification<NeElement>() {
public Predicate toPredicate(Root<NeElement> root, CriteriaQuery<?> query, CriteriaBuilder cb){
List<Predicate> predicate = new ArrayList<>();
if (searchquery != null) {
System.out.println("searchquery.getId():"+searchquery.getId());
if(searchquery.getId() != null && !"".equals(searchquery.getId())) {
// DeviceGroup group = new DeviceGroup();
// group.setId(searchquery.getId());
// System.out.println("group:"+group);
Predicate p = cb.equal( root.join(root.getModel().getList("deviceGroupList",DeviceGroup.class), JoinType.INNER).get("id").as(String.class), searchquery.getId());
predicate.add(p);
// predicate.add( cb.equal(root.get("deviceGroupList").get,searchquery.getId()));
}
if (searchquery.getDeviceIp()!= null){
predicate.add( cb.like(root.get("deviceIp"),"%"+searchquery.getDeviceIp()+"%"));
}
if(searchquery.getManufacturer() != null) {
predicate.add( cb.like(root.get("manufacturer"),"%"+searchquery.getManufacturer()+"%"));
/*predicate.add( cb.equal(root.get("manufacturer"),searchquery.getManufacturer())); */
}
}
Predicate[] pre = new Predicate[predicate.size()];
return query.where(predicate.toArray(pre)).getRestriction();
}
};
}
}
最后是controller层:
package com.sunwave.deviceManagement.controller;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.log;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.excel.metadata.Sheet;
import com.sunwave.common.EventType;
import com.sunwave.config.RedisService;
import com.sunwave.deviceManagement.domain.NeModelParam;
import com.sunwave.deviceManagement.query.NeElementQuery;
import com.sunwave.deviceManagement.service.NeElementService;
import com.sunwave.deviceManagement.service.NeModelParamService;
import com.sunwave.dto.OperationDto;
import com.sunwave.grouping.domain.NeElement;
import com.sunwave.sender.MessageSender;
import com.sunwave.utils.ExportUtil;
import com.sunwave.utils.HttpUtil;
import com.sunwave.utils.JacksonUtil;
import com.sunwave.vo.GroupVo;
import com.sunwave.vo.ParamVo;
import com.sunwave.vo.Result;
import io.swagger.annotations.ApiOperation;
/**
* @author lfw
* @date 2020年8月5日
* @time 上午8:32:00
*
*/
@CrossOrigin//此注解可解决跨域问题
@RestController
@RequestMapping("/api/neElement")
public class NeElementController {
private final static Logger logger = LoggerFactory.getLogger(NeElementController.class);
@Autowired
NeElementService neElementService;
@Resource
RedisTemplate redisTemplate;
@Autowired
RedisService redisService;
@Autowired
MessageSender messageSender;
@Autowired
NeModelParamService neModelParamService;
@SuppressWarnings("finally")
@RequestMapping(value="/getNeElement",method = RequestMethod.POST)//分页查询
@ResponseBody
public Page<NeElement> getNeElement(@RequestBody NeElementQuery query){
logger.info("Enter into NeElementController.getNeElement()");
Page<NeElement> neElement= null;
try {
neElement= neElementService.findNeElementPage(query);
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error("Error in NeElementController.getNeElement():"+e.getMessage());
}
finally{
logger.info("Exist NeElementController.getNeElement()");
return neElement;
}
}
@ResponseBody
@ApiOperation(value = "导出excel",httpMethod="GET")
@GetMapping("/exportExcel")
public Result exportExcel(HttpServletResponse response,@RequestBody GroupVo groupVo) {
logger.info("Enter into NeElementController.exportExcel");
try {
List<NeElement> list=new ArrayList<NeElement>();
for (int j = 0; j <groupVo.getNeIdList().size(); j++) {
Long neId = groupVo.getNeIdList().get(j);
NeElement element = neElementService.getElementExcel(neId);
list.add(element);
}
Sheet sheet = new Sheet(1, 0,NeElement.class);
ExportUtil.doExportExcel(response, "Element", "sheet1", sheet, list);
}catch (Exception e) {
logger.error("Error in NeElementController.exportExcel()" + e.getMessage());
return Result.failure(100, "导出失败");
}
logger.info("Exist NeElementController.exportExcel()");
return Result.ok("导出成功");
}
}
🆗了,自己把多余的代码去掉,核心在service的实现层。
最后加上几个实用工具类:
1、导出excel的工具类:
package com.sunwave.utils;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.support.ExcelTypeEnum;
/**
* 阿里easyexcel xlsx导出
*/
public class ExportUtil {
/**
* xlsx导出
* @param response HttpServletResponse
* @param fileName 文件名称
* @param sheetName sheet名称
* @param sheet Sheet sheet = new Sheet(1, 0,UserDTO.class);需要被导出的实体类,实体类需要继承BaseRowModel
* @param list 需要导出的数据集
* @throws IOException
*/
@SuppressWarnings({ "deprecation", "rawtypes" })
public static void doExportExcel(HttpServletResponse response,String fileName,String sheetName,Sheet sheet,List list) throws IOException
{
ServletOutputStream out = response.getOutputStream();
ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
//设置自适应宽度
sheet.setAutoWidth(Boolean.TRUE);
// 第一个 sheet 名称
sheet.setSheetName(sheetName);
writer.write(list, sheet);
//通知浏览器以附件的形式下载处理,设置返回头要注意文件名有中文
response.setHeader("Content-disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ) + ".xlsx");
writer.finish();
response.setContentType("multipart/form-data");
response.setCharacterEncoding("utf-8");
out.flush();
}
}
2、返回值封装工具类:
package com.sunwave.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author ylf
* @date 2020年3月12日
* @time 上午11:41:15
* @param <T>
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Result<T> {
private static final String CODE = "code";
private static final String MSG = "msg";
private Integer code=200;
private String msg="操作成功";
private String description;
private T data;
private HashMap<String,Object> exend;
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 getData() {
return data;
}
public Result setData(T data) {
this.data = data;
return this;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@JsonIgnore
public HashMap<String, Object> getExend() {
return exend;
}
public void setExend(HashMap<String, Object> exend) {
this.exend = exend;
}
public Result() {
exend = new HashMap<>();
}
public static Result failure(int code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
public static Result ok(String msg) {
Result result = new Result();
result.put("msg", msg);
return result;
}
public static Result ok(Map<String, Object> map) {
Result result = new Result();
result.exend.putAll(map);
return result;
}
public static Result ok() {
return new Result();
}
public Result put(String key, Object value) {
exend.put(key, value);
return this;
}
}
3、json工具类:
package com.sunwave.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class JacksonUtil {
private static final Log logger = LogFactory.getLog(JacksonUtil.class);
public static String parseString(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null)
return leaf.asText();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static List<String> parseStringList(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null)
return mapper.convertValue(leaf, new TypeReference<List<String>>() {
});
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Integer parseInteger(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null)
return leaf.asInt();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static List<Integer> parseIntegerList(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null)
return mapper.convertValue(leaf, new TypeReference<List<Integer>>() {
});
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Boolean parseBoolean(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null)
return leaf.asBoolean();
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Short parseShort(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null) {
Integer value = leaf.asInt();
return value.shortValue();
}
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Byte parseByte(String body, String field) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null) {
Integer value = leaf.asInt();
return value.byteValue();
}
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static <T> T parseObject(String body, String field, Class<T> clazz) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
node = node.get(field);
return mapper.treeToValue(node, clazz);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static <T> T parseObject(String body, Class<T> clazz) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
try {
node = mapper.readTree(body);
return mapper.treeToValue(node, clazz);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static <T> List<T> parseObjectList(String body, String field, Class<T> tClass) {
ObjectMapper mapper = new ObjectMapper();
JsonNode node;
List<T> result = new ArrayList<>();
try {
node = mapper.readTree(body);
JsonNode leaf = node.get(field);
if (leaf != null){
List list = mapper.convertValue(leaf, new TypeReference<List<T>>() {
});
for (Object o : list) {
String s = toJson(o);
T t = mapper.convertValue(toNode(s), tClass);
result.add(t);
}
return result;
}
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Object toNode(String json) {
if (json == null) {
return null;
}
ObjectMapper mapper = new ObjectMapper();
try {
return mapper.readTree(json);
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static Map<String, String> toMap(String data) {
ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.readValue(data, new TypeReference<Map<String, String>>() {
});
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
return null;
}
public static String toJson(Object data) {
ObjectMapper objectMapper = new ObjectMapper();
try {
return objectMapper.writeValueAsString(data);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
以后继续分享。