2019年7月28日,第一阶段的中之保风控系统项目已经完成了开发,在开发过程中,我大量接触到了解析json字符串的需求,拿去对应需求的元素。在此过程中,我编写了能够快速拿取json字符串的帮助类。
一、引入依赖:
//用gradle管理
implementation "com.fasterxml.jackson.core:jackson-databind"
二、帮助类代码:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
/**
* @author edison_kwok
*/
public class JsonUtils {
private static ObjectMapper objectMapper = new ObjectMapper();
/**
* 根据路径解析json字符串,获取String类型数据
*
* @param content
* @param path
* @return
* @throws IOException
*/
public static String parse(String content, Object[] path) throws IOException {
if (StringUtils.isBlank(content)) {
return null;
}
try {
JsonNode node = objectMapper.readTree(content);
int len = path.length;
int index = 0;
while (index < len) {
if (path[index] instanceof Integer) {
int i = (Integer) path[index];
node = node.get(i);
} else if (path[index] instanceof String) {
String s = (String) path[index];
node = node.get(s);
}
index++;
}
String result = node.toString();
return result.substring(1, result.length() - 1);
} catch (NullPointerException e) {
return null;
}
}
/**
* 根据路径解析json字符串,获取Integer类型字符串
*
* @param content
* @param path
* @return
* @throws IOException
*/
public static Integer parseInteger(String content, Object[] path) throws IOException {
if (StringUtils.isBlank(content)) {
return null;
}
try {
JsonNode node = objectMapper.readTree(content);
int len = path.length;
int index = 0;
while (index < len) {
if (path[index] instanceof Integer) {
int i = (Integer) path[index];
node = node.get(i);
} else if (path[index] instanceof String) {
String s = (String) path[index];
node = node.get(s);
}
index++;
}
String result = node.toString();
return Integer.parseInt(result);
} catch (NullPointerException e) {
return null;
}
}
/**
* 根据路径解析json字符串,获取当中的json字符串
*
* @param content
* @param path
* @return
* @throws IOException
*/
public static String parseJson(String content, Object[] path) throws IOException {
if (StringUtils.isBlank(content)) {
return null;
}
try {
JsonNode node = objectMapper.readTree(content);
int len = path.length;
int index = 0;
while (index < len) {
if (path[index] instanceof Integer) {
int i = (Integer) path[index];
node = node.get(i);
} else if (path[index] instanceof String) {
String s = (String) path[index];
node = node.get(s);
}
index++;
}
return node.toString();
} catch (NullPointerException e) {
return null;
}
}
}
三、使用:
在项目开发中,如果大量使用到了json解析需求,可以使用本帮助类。