Json轉pojo或轉List, pojo轉json
阿新 • • 發佈:2019-02-09
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
/**
* 工具類
* json和pojo和List之間的轉換
*/
public class JsonUtils {
/**
* 定義jackson物件
*/
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 將物件轉換成json字串。
* @param data 物件
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 將json結果集轉化為物件
* @param jsonData json資料
* @param beanType 物件中的object型別
* @param <T>
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 將json資料轉換成pojo物件list
* @param jsonData json資料
* @param beanType 物件中的object型別
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
如果json字串中的內容是下劃線命名格式 如 student_name
而對應的pojo中的變數是駝峰命名格式 如 studentName
如果直接呼叫方法轉換, 就會出現異常
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field “student_name”
這時候 在pojo中變數上加上
@JsonProperty(“student_name”)即可決解問題
例如
public class test {
@JsonProperty("student_name")
private String studentName;
}