json工具类 Object强制转换为List ,JSON转List<>
下面有json工具类
也可以参考我另一篇JSON 转对象文章:
https://blog.csdn.net/qq_41080067/article/details/119952003
JSONObject.parseObject 是Alibaba的fastJson包
/**
* Object对象转 List集合
*
* @param object Object对象
* @param clazz 需要转换的集合
* @param <T> 泛型类
* @return
*/
public static <T> List<T> changeList(Object object,Class<T> clazz){
try {
List<T> result = new ArrayList<>();
if (object instanceof List<?>){
for (Object o : (List<?>) object) {
String string = JSONObject.toJSONString(o);
T t = JSONObject.parseObject(string, clazz);
result.add(t);
}
return result;
}
return null;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
使用方法:
public static void main(String[] args) {
String list="[ { \"id\": 1, \"socialId\": 1, \"startTime\": \"2022-01-26\", \"type\": \"1\", \"state\": \"1\", \"feedbackStartTime\": null, \"reason\": null, \"salary\": 0, \"entrustTime\": \"2022-04-26\", \"createUser\": \"admin\", \"createTime\": \"2022-04-26 16:17:29\", \"updateUser\": \"admin\", \"updateTime\": \"2022-04-27 16:54:18\", \"isDelete\": false, \"isRecycle\": 0 }, { \"id\": 2, \"socialId\": 1, \"startTime\": \"2022-01-26\", \"type\": \"2\", \"state\": \"1\", \"feedbackStartTime\": null, \"reason\": null, \"salary\": 0, \"entrustTime\": \"2022-04-26\", \"createUser\": \"admin\", \"createTime\": \"2022-04-26 16:17:29\", \"updateUser\": \"admin\", \"updateTime\": \"2022-04-27 16:54:18\", \"isDelete\": false, \"isRecycle\": 0 }, { \"id\": 3, \"socialId\": 1, \"startTime\": \"2022-01-26\", \"type\": \"3\", \"state\": \"1\", \"feedbackStartTime\": null, \"reason\": null, \"salary\": 0, \"entrustTime\": \"2022-04-26\", \"createUser\": \"admin\", \"createTime\": \"2022-04-26 16:17:29\", \"updateUser\": \"admin\", \"updateTime\": \"2022-04-27 16:54:18\", \"isDelete\": false, \"isRecycle\": 0 }, { \"id\": 4, \"socialId\": 1, \"startTime\": \"2022-01-26\", \"type\": \"4\", \"state\": \"1\", \"feedbackStartTime\": null, \"reason\": null, \"salary\": 0, \"entrustTime\": \"2022-04-26\", \"createUser\": \"admin\", \"createTime\": \"2022-04-26 16:19:18\", \"updateUser\": \"admin\", \"updateTime\": \"2022-04-27 16:54:18\", \"isDelete\": false, \"isRecycle\": 0 } ]";
Object o = JsonUtils.parseJsonToDto(list, List.class);
List<HrSocialSecurityIncreasePo> poList = JsonUtils.changeList(o, HrSocialSecurityIncreasePo.class);
poList.forEach(a-> System.out.println(a.getSocialId()));
System.out.println(o);
}
Json工具类:
package com.person.common.utils;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
/**
* JSON 工具类
* @author zms
* @date 2022/4/28
**/
public class JsonUtils {
/**
* 根据传入的DTO得到JsonString
* @param object
* @return
*/
public static String parseObjectToJson(Object object){
StringWriter writer = null;
ObjectMapper objectMapper = new ObjectMapper();
writer = new StringWriter();
try {
objectMapper.writeValue(writer, object);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return writer.toString();
}
/**
* 根据传入的Object转json
* @param object
* @return
*/
public static String parseJsonToObject(Object object){
ObjectMapper objectMapper = new ObjectMapper();
String json = "";
try {
json = objectMapper.writeValueAsString(object);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return json;
}
/**
* 将json转化为Map
* @param json
* @return
* @throws Exception
*/
public static Map<String,Object> parseJsonToMap(String json){
ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> maps = null;
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
try {
maps = objectMapper.readValue(json, Map.class);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return maps;
}
/**
* json转ReportDetailDto
* @param json
* @return
*/
public static Object parseJsonToDto(String json,Class clz){
if (json == null || json.trim().length() == 0) {
throw new IllegalArgumentException("json can not be null");
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
Object object = null;
try {
object = objectMapper.readValue(json, clz);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return object;
}
/**
* Object对象转 List集合
*
* @param object Object对象
* @param clazz 需要转换的集合
* @param <T> 泛型类
* @return
*/
public static <T> List<T> changeList(Object object,Class<T> clazz){
try {
List<T> result = new ArrayList<>();
if (object instanceof List<?>){
for (Object o : (List<?>) object) {
String string = JSONObject.toJSONString(o);
T t = JSONObject.parseObject(string, clazz);
result.add(t);
}
return result;
}
return null;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}