環境
- jdk 7
- 4.3.24.RELEASE
源碼
package jiangbo.util;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public final class JsonUtils {
public static final ObjectMapper JSON_MAPPER = new ObjectMapper();
/** 如果有不識別的屬性,不會報錯,只會忽略。 */
public static final ObjectMapper IGNORE_JSON_MAPPER;
static {
IGNORE_JSON_MAPPER = new ObjectMapper();
IGNORE_JSON_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
}
/**
* Constructor<br>
*/
private JsonUtils() {
}
/**
* 將對象轉為 json <br>
*
* @param object {@link Object}
* @return json 字符串
*/
public static String toJson(Object object) {
try {
return JSON_MAPPER.writeValueAsString(object);
} catch (JsonProcessingException e) {
throw new RuntimeException("轉換Json出錯", e);
}
}
/**
* 將字符串 json 轉為對象<br>
*
* @param <T> 轉換后的類型
* @param content json 字符串
* @param type 轉換后的類型
* @return 轉換后的結果
*/
public static <T> T fromJson(String content, Class<T> type) {
return toObject(JSON_MAPPER, content, type);
}
/**
* 將字符串 json 轉為對象,將忽略未知的字段<br>
*
* @param <T> 轉換后的類型
* @param content json 字符串
* @param type 轉換后的類型
* @return 轉換后的結果
*/
public static <T> T fromIgnoreJson(String content, Class<T> type) {
return toObject(IGNORE_JSON_MAPPER, content, type);
}
/**
* 將字符串 json 轉為對象<br>
*
* @param <T> 轉換后的類型
* @param mapper {@link ObjectMapper}
* @param content json 字符串
* @param type 轉換后的類型
* @return 轉換后的結果
*/
private static <T> T toObject(ObjectMapper mapper, String content, Class<T> type) {
try {
return mapper.readValue(content, type);
} catch (IOException e) {
throw new RuntimeException("json轉換出錯", e);
}
}
}