需求:前段时间,忽然想着能否对前端上传的JSON数据直接通过现有的接口实现转成相应的Model对象或者Model数组,百度了很久,没有找到合适的,要么自己通过反射去获取和设置值,这不符合“不重复早轮子”的思想。通过自己不断努力,重要找到了,现在把我的成果展示一下。
1、开发之前,你需要三个jar包:
PS:网上找了很久,没有找到,找到了但是依赖有问题,所以为了提高开发效率,小编建议搭建Maven项目,这样可以直接在pom.xml直接粘贴如下代码:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.9</version>
</dependency>
2、JsonUtil类型:
/**
* @author weiJY
* 2019年10月10日下午2:01:57
* 说明:
* @tag
*
*/
package com.future.json;
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @Describtion:
* @author: weiJY
* 2019年10月10日下午2:01:57
*/
public class JsonUtil {
// 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* @Description : json数据转成model对象
* @author: weiJY
* @date:2019年10月10日下午4:21:50
* @param jsonData json数据
* @param objClass model类型class
* @return
* T
*/
public static <T> T jsonToPojo(String jsonData,Class<T> objClass){
try {
T t = MAPPER.readValue(jsonData, objClass);
return t;
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* @Description : json(里面是很多个对象)转成数组对象
* @author: weiJY
* @date:2019年10月11日下午12:35:08
* @param jsonData
* @param objClass
* @return
* List<T>
*/
public static <T>List<T> jsonToObjList(String jsonData,Class<T> objClass){
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, objClass);
List<T> list;
try {
list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
然后可以测试了,只有太简单了,我就不写测试类了,如果哪个小白有什么问题,都可以私聊我,有时间的我一定回复!
帮得上的就点个赞,给个好评吧。谢谢!