jackson的使用
由于json格式简单且易读,所以在开发中经常会与json打交道。我们在后端经常在接口调用的时候需要解析json数据。Jackson是近年来比较还用的json解析工具。
Jackson解析json主要用到的是ObjectMapper
这个类。首先我们创建两个类User
和ResultVO
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class User {
private String name;
private Integer gender;
private String idcard;
private Boolean married; }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| @JsonInclude(JsonInclude.Include.NON_NULL) public class ResultVO<T> {
private Integer code;
private String msg;
private T data;
public ResultVO() {
}
public ResultVO(Integer code, String msg) { this.code = code; this.msg = msg; }
public ResultVO(Integer code, String msg, T data) { this.code = code; this.msg = msg; this.data = data; }
public static <T> ResultVO getSuccess(String msg) { return new ResultVO(1, msg); }
public static <T> ResultVO getSuccess(String msg, T data) { return new ResultVO(1, msg, data); }
public static <T> ResultVO getFailed(String msg) { return new ResultVO(0, msg); }
public static <T> ResultVO getFailed(String msg, T data) { return new ResultVO(0, msg, data); }
public static <T> ResultVO getNoLogin() { return new ResultVO(2, "用户未登录,请重新登录"); }
public static <T> ResultVO getNoAuthorization() { return new ResultVO(3, "用户没有操作权限,请重新登录"); }
public Integer getCode() { return code; }
public void setCode(Integer code) { this.code = code; }
public String getMsg() { return msg; }
public void setMsg(String msg) { this.msg = msg; }
public T getData() { return data; }
public void setData(T data) { this.data = data; } }
|
一般接口调用返回的格式:ResultVO<List<User>>
,那我们如何用Jackson优雅的解析这样的对象呢。
1 2
| ResultVO<List<User>> userResult2 = objectMapper.readValue(objectMapper.writeValueAsString(userResult), new TypeReference<ResultVO<List<User>>>() { });
|
只需要一行代码就可以解析完成。使用TypeReference可以很简单的解析泛型json数据,相比于一层一层解析方便了很多。还有其他一些用法可以自行研究下。