对JAVA类型的转换一直很模糊,整理一下:
今天刚发现在resp.getResult()上ctrl alt v,会联想出前面的类型,这个技巧我惊为天人...
obj其实就是java bean,我naive了
这篇类型转换已经写的很清楚了:FastJson对于JSON格式字符串、JSON对象及JavaBean之间的相互转换
1.JSONObject Object dto
ResponseDto resp = applicationServiceImpl.queryAllApplication("xxx","xxx", ZERO,LIMIT,request);
1) 可以看出上文的resp的result是个Obj,那么Obj可以直接强转成DTO:
PageDto page = (PageDto)resp.getResult();
2) 那如果obj里的内容是个JSON,我们需要取某一项呢:
JSONObject result = (JSONObject) JSON.toJSON(resp.getResult());
JSONArray data = result.getJSONArray("data");
3) 报错的写法:"com.alibaba.fastjson.JSONObject cannot be cast to dto"
JSONObject o = (JSONObject) resp.getResult();
PageDto pageDto = JSONObject.parseObject(JSONObject.toJSONString(o), PageDto.class);
2.JSON 的处理:
贴一个遍历JSON的用法:
JSONObject result = (JSONObject) JSON.toJSON(resp.getResult());
JSONArray data = result.getJSONArray("data");
LOGGER.info("data:{}",data);
List<String> contentList1 = new ArrayList<>();
for(int i = 0;i<data.size();i++) {
JSONObject obj = (JSONObject) data.get(i);
String username = obj.getString("name");
LOGGER.info("username:{}",username);
contentList1.add(username);
}
3.这两个不知道怎么用:
1)JSONObject result = (JSONObject) JSON.toJSON(resp.getResult()); // obj- > JSONObject
定义:public static Object toJSON(Object javaObject, SerializeConfig config)
相当于obj toJSON后强转成JSONObj
2) PageDto pageDto = JSONObject.parseObject(JSONObject.toJSONString(o), PageDto.class);
为什么报错呢?看下parseObject的定义: