之前没用过jackson,第一次用记录下
工具类
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.util.List;
public class JSONUtil {
private final static ObjectMapper mapper;
static {
mapper = new ObjectMapper();
// 忽略json中在对象不存在对应属性
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// 忽略空bean转json错误
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
}
/**
* 对象转字符串Json
*
* @param obj
* @return
*/
public static String objToString(Object obj) throws JsonProcessingException {
return mapper.writeValueAsString(obj);
}
/**
* 字符串json转对象
*
* @param json
* @param clz
* @param <T>
* @return
* @throws JsonProcessingException
*/
public static <T> T strToObj(String json, Class<T> clz) throws JsonProcessingException {
return mapper.readValue(json, clz);
}
/**
* 数组类型字符串转对象
* @param json
* @param clz
* @return
* @throws JsonProcessingException
*/
public static List strToList(String json, Class clz) throws JsonProcessingException {
CollectionType listType = mapper.getTypeFactory().constructCollectionType(List.class, clz);
return mapper.readValue(json, listType);
}
/**
* 通过key 获取json字符串的值
*
* @param json
* @param key
* @return
* @throws JsonProcessingException
*/
public static String getValue(String json, String key) throws JsonProcessingException {
JsonNode jsonNode = mapper.readTree(json);
return jsonNode.findValue(key).asText();
}
/**
* 通过key 获取json字符串的值 list
*
* @param json
* @param key
* @return
* @throws JsonProcessingException
*/
public static List<String> getValues(String json, String key) throws JsonProcessingException {
JsonNode jsonNode = mapper.readTree(json);
List<String> values = jsonNode.findValuesAsText(key);
return values;
}
}
字符串转JsonNode,获取值
String aa = "{\"a1\":\"11\",\"list\":[{\"b1\":1},{\"b2\":2}]}";
ObjectMapper mapper = new ObjectMapper();
JsonNode jj = mapper.readTree(aa);
System.out.println(jj);//{"a1":"11"}
System.out.println(jj.get("a1")); //"11"
JsonNode jn = jj.get("list");
System.out.println(jn); //[{"b1":1},{"b2":2}]
System.out.println(jn.get(1)); //{"b2":2}
System.out.println(jn.get(1).get("b2")); // 2