Json转pojo或转List, pojo转json

来源:互联网 发布:侠义 知乎 编辑:程序博客网 时间:2024/05/30 02:24
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;}
原创粉丝点击