1 package com.bie.demo.utils;2
3 import com.fasterxml.jackson.databind.JsonNode;4 import com.fasterxml.jackson.databind.ObjectMapper;5
6 import java.io.Serializable;7 import java.util.List;8
9 /**10 * @ProjectName:11 * @Package:12 * @ClassName:13 * @Author:14 * @Description: ${description}15 * @Date: 2020/2/28 10:4016 * @Version: 1.017 */
18 public classNationalPolicyResult implements Serializable {19
20 /**21 *22 */
23 private static final long serialVersionUID = 1L;24
25 //定义jackson对象
26 private static final ObjectMapper MAPPER = newObjectMapper();27
28 //返回标记,成功标记为0,失败为1
29 privateInteger code;30
31 //返回消息
32 privateString msg;33
34 //返回中的数据
35 privateObject data;36
37 /**38 * 1、成功返回调用的方法39 *40 * @param data41 * @return42 */
43 public staticNationalPolicyResult success(Object data) {44 return newNationalPolicyResult(data);45 }46
47 /**48 * 2、成功返回调用的方法,重载方法49 *50 * @return51 */
52 public staticNationalPolicyResult success() {53 return new NationalPolicyResult(null);54 }55
56
57 /**58 * 3、传入封装的数据,返回标记和返回信息进行默认59 *60 * @param data61 */
62 publicNationalPolicyResult(Object data) {63 this.code = 0;64 this.msg = "success";65 this.data =data;66 }67
68 /**69 * 4、无参的构造方法70 */
71 publicNationalPolicyResult() {72
73 }74
75 /**76 * 5、自己构建一个方法,调用构造方法,返回自己封装的状态,返回信息,和封装的数据信息77 *78 * @param code79 * @param msg80 * @param data81 * @return82 */
83 public staticNationalPolicyResult build(Integer code, String msg, Object data) {84 return newNationalPolicyResult(code, msg, data);85 }86
87 /**88 * 6、自己构建一个方法,重载,调用构造方法,默认封装的数据信息为null89 *90 * @param code91 * @param msg92 * @return93 */
94 public staticNationalPolicyResult build(Integer code, String msg) {95 return new NationalPolicyResult(code, msg, null);96 }97
98 /**99 * 7、可以传入封装的数据,和封装的信息,失败或者成功100 *101 * @param data102 * @param msg103 */
104 publicNationalPolicyResult(Object data, String msg) {105 this.code = 0;106 this.msg =msg;107 this.data =data;108 }109
110
111 /**112 * 8、含参的构造方法113 *114 * @param code115 * @param msg116 * @param data117 */
118 publicNationalPolicyResult(Integer code, String msg, Object data) {119 this.code =code;120 this.msg =msg;121 this.data =data;122 }123
124 publicInteger getCode() {125 returncode;126 }127
128 public voidsetCode(Integer code) {129 this.code =code;130 }131
132 publicString getMsg() {133 returnmsg;134 }135
136 public voidsetMsg(String msg) {137 this.msg =msg;138 }139
140 publicObject getData() {141 returndata;142 }143
144 public voidsetData(Object data) {145 this.data =data;146 }147
148
149 /**150 * 将json结果集转化为NationalPolicyResult对象151 *152 * @param jsonData json数据153 * @param clazz NationalPolicyResult中的object类型154 * @return155 */
156 public static NationalPolicyResult formatToPojo(String jsonData, Class>clazz) {157 try{158 if (clazz == null) {159 return MAPPER.readValue(jsonData, NationalPolicyResult.class);160 }161 JsonNode jsonNode =MAPPER.readTree(jsonData);162 JsonNode data = jsonNode.get("data");163 Object obj = null;164 if (clazz != null) {165 if(data.isObject()) {166 obj =MAPPER.readValue(data.traverse(), clazz);167 } else if(data.isTextual()) {168 obj =MAPPER.readValue(data.asText(), clazz);169 }170 }171 return build(jsonNode.get("code").intValue(), jsonNode.get("msg").asText(), obj);172 } catch(Exception e) {173 return null;174 }175 }176
177 /**178 * 没有object对象的转化179 *180 * @param json181 * @return182 */
183 public staticNationalPolicyResult format(String json) {184 try{185 return MAPPER.readValue(json, NationalPolicyResult.class);186 } catch(Exception e) {187 e.printStackTrace();188 }189 return null;190 }191
192 /**193 * Object是集合转化194 *195 * @param jsonData json数据196 * @param clazz 集合中的类型197 * @return198 */
199 public static NationalPolicyResult formatToList(String jsonData, Class>clazz) {200 try{201 JsonNode jsonNode =MAPPER.readTree(jsonData);202 JsonNode data = jsonNode.get("data");203 Object obj = null;204 if (data.isArray() && data.size() > 0) {205 obj =MAPPER.readValue(data.traverse(),206 MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));207 }208 return build(jsonNode.get("status").intValue(), jsonNode.get("msg").asText(), obj);209 } catch(Exception e) {210 return null;211 }212 }213
214 }