一、 直接解析
AlarmRequest serverRequest = new AlarmRequest(); //封装要传递的bean
Map<String, Object> params = cn.hutool.core.bean.BeanUtil.beanToMap(serverRequest);
String responseString = HttpClientUtils.sendPost(apis.mobileLink(labelResources.getQueryUserLabelList()), JSONUtil.toJsonStr(params));
if (!StringUtils.isEmpty(responseString)) {
MobileApiResponse serverResp = cn.hutool.json.JSONUtil.toBean(responseString, MobileApiResponse.class);
if (serverResp != null && CoreConstant.SUCCEED_CODE_RES.equals(serverResp.getCode())) {
cn.hutool.json.JSONArray strArray = (JSONArray) serverResp.getData();
List<UserLabelResponseVo> labels = JSONUtil.toList(strArray, UserLabelResponseVo.class); //JSONArray转为List集合
return Results.success(labels);
}
}
响应的参数:
@Data public class MobileApiResponse<T> { private String info; private Integer code; private Integer count; private T data; }
二、TypeToken 是google提供解析json数据的类库中的一个类:
Type type = new TypeToken<linkedList<T>>(){}.getType();
String responseString = httpClientutils.sendFormPost(url,parms);
resp = jsonUtils.parseObject(responseString, type);
Map<String, Object> params = BeanUtil.beanToMap(serverRequest);
String responseString = HttpClientUtils.sendPost(apis.blackLink(alarmResources.getQueryBlackList()), JSONUtil.toJsonStr(params));
if (!StringUtils.isEmpty(responseString)) {
Type type = new TypeToken<ServerResponse>() {
}.getType();
ServerResponse serverResp = JSONUtil.toBean(responseString, type, false);
if (serverResp != null) {
if (serverResp.getStatus() == CoreConstant.SUCCEED_CODE) {
JSONObject jsonObject = (JSONObject)serverResp.getContent();
JSONArray strArray = jsonObject.getJSONArray("list");
List<BlackVo> blackVos = JSONUtil.toList(strArray, BlackVo.class);
return Results.success(blackVos);
}
}
}
本文介绍了如何利用Google的TypeToken类库解析Json响应。首先,通过httpClientutils发送POST请求获取响应字符串,然后使用jsonUtils的parseObject方法,结合TypeToken来解析成特定类型的对象。
3271

被折叠的 条评论
为什么被折叠?



