1. 程式人生 > >Json轉pojo或轉List, pojo轉json

Json轉pojo或轉List, pojo轉json

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;
}