MorphDynaBean 对象转换具体的实体POJO对象
来源:互联网 发布:js切换隐藏 编辑:程序博客网 时间:2024/06/05 20:37
在使用JSONObject对象把获取到的字符串转换成项目中的实体对象时经常会发现被转换成了MorphDynaBean对象,非常恶心,如下方法可把字符串转换成自己想要的对象。
JSONObject jsonObject = JSONObject.fromObject(str); Map<String,Class> classMap = new HashMap<>(); classMap.put("list_data", AdsReportWarnPlacePeriodWeek.class); classMap.put("summary_info_data", AdsReportWarnPlaceRegularWeek.class); //转换对象 WordAndPDFTemplateVo wordOrPdfVo = (WordAndPDFTemplateVo) JSONObject.toBean(jsonObject, WordAndPDFTemplateVo.class,classMap);
举例:
具体场景,前端有一些配装的字符,提交至后端后需要转换称具体的vo或者pojo实体进其他操作。
如:
function appedData(type) { var WordOrPDFVo = {// 工作日环比分析图表svg字符串 anylize_avg:slice_chart.getSVG() + "_" +on_ramp_chart.getSVG() + "_" +off_ramp_chart.getSVG() + "_" + inter_chart.getSVG(),// 时段分析图表svg字符串 summary_charts_svg: morning_peak_chart.getSVG() + "_" + off_peak_chart.getSVG() + "_" + noon_peak_chart.getSVG(), // 报告标题 report_title:report_title_vo,// 1.总体分析// 总体分析标题 allringtatio_title:allringtatio_title_vo, title_all:title_all_vo, data_all:data_all_vo, title_weekday:title_weekday_vo, data_weekday:data_weekday_vo, title_notweekday:title_notweekday_vo, data_notweekday:data_notweekday_vo, title_charts:title_charts_vo, title_summary:title_summary_vo, title_line_summary:title_line_summary_vo, line_summary:line_summary_vo,// 2、本周环比上周平均报警数量大幅度上升和下降点位解析 week_title:week_title_vo, week_info_title:week_info_title_vo, list_line:list_line_vo, list_data:list_data_vo,// 3.工作日高架分类别、分时段 TOP 报警点位及相应信号灯调控次数和效果分析 highway_title:highway_title_vo, highway_info_title:highway_info_title_vo, highway_info_data:highway_info_data_vo,// 4、工作日路口分类别、分时段 TOP 报警点位及相应信号灯调控次数分析 inter_title:inter_title_vo, inter_info_title:inter_info_title_vo, inter_info_data:inter_info_data_vo, inter_info_data_summary:inter_info_data_summary_vo,// 5、总论 summary_title:summary_title_vo, summary_info_title:summary_info_title_vo, summary_info_line:summary_info_line_vo, summary_info_data:summary_info_data_vo, export_type:type }; $("#str").val(JSON.stringify(WordOrPDFVo)); } $(function(){ $("#btn_word").bind("click",function(){ appedData("word"); $("#form1").attr("action","createWordOrPdf") $("#form1").submit(); $("#str").val(""); }); $("#btn_pdf").bind("click",function(){ appedData("pdf"); $("#form1").attr("action","createWordOrPdf") $("#form1").submit(); $("#str").val(""); }); });
实体:
public class WordAndPDFTemplateVo {// 报告标题 private String report_title;// 1.总体分析// 总体分析标题 private String allringtatio_title; private String title_all; private List<String> data_all; private String title_weekday; private List<String> data_weekday; private String title_notweekday; private List<String> data_notweekday; private String title_charts; private String title_summary; private String title_line_summary; private List<String> line_summary;// 2、本周环比上周平均报警数量大幅度上升和下降点位解析 private String week_title; private String week_info_title; private List list_line; private List<AdsReportWarnPlacePeriodWeek> list_data;// 3.工作日高架分类别、分时段 TOP 报警点位及相应信号灯调控次数和效果分析 private String highway_title; private String highway_info_title; private List highway_info_data;// 4、工作日路口分类别、分时段 TOP 报警点位及相应信号灯调控次数分析 private String inter_title; private String inter_info_title; private List inter_info_data; private String inter_info_data_summary;// 5、总论 private String summary_title; private String summary_info_title; private String summary_info_line; private List<AdsReportWarnPlaceRegularWeek> summary_info_data;// svg字符串// 工作日环比分析图表svg字符串 private String anylize_avg;// 时段分析图表svg字符串 private String summary_charts_svg; private String export_type; // word pdf public WordAndPDFTemplateVo() { } 省略get、set方法。。。
后端接收
JSONObject jsonObject = JSONObject.fromObject(str); Map<String,Class> classMap = new HashMap<>(); classMap.put("list_data", AdsReportWarnPlacePeriodWeek.class); classMap.put("summary_info_data", AdsReportWarnPlaceRegularWeek.class); //转换对象 WordAndPDFTemplateVo wordOrPdfVo = (WordAndPDFTemplateVo) JSONObject.toBean(jsonObject, WordAndPDFTemplateVo.class,classMap);
如果不这样设置接受到的所有List对象都将转换成
List<MorphDynaBean>
这样操作起来非常麻烦
如果转换成MorphDynaBean对象,对其判断其是否包含某个熟悉可以用如下方法
/** * 检测 DynaClass 对象中有某个属性 * @param key * @param dynaClass * @return */ public boolean checkProperty(String key, DynaClass dynaClass){ if(dynaClass==null){ return false; } boolean flag = false; try { DynaProperty[] properties = dynaClass.getDynaProperties(); if(properties.length>0){ for(DynaProperty property:properties){ if(StringUtils.equals(property.getName(),key)){ flag = true; break; } } } }catch (Exception e){ return flag; } return flag; }
dynaClass 是 MorphDynaBean.getDynaClass()获取到的。
阅读全文
0 0
- MorphDynaBean 对象转换具体的实体POJO对象
- 把ComponentMetadata转换成具体的对象
- Hibernater实体对象的状态与转换
- Hibernater实体对象的状态与转换
- rails字符串转换表的实体对象
- 实体与对象的转换,有待完善
- json字符串与pojo对象,list集合的转换
- Map集合转换为Pojo对象的工具类
- Java关于实体对象和Map对象之间的转换
- POJO对象
- 具体对象转换成泛型返回对象
- 10.POJO对象的状态
- 解决springMVC中restful的POST请求时接受json对象转换pojo对象失败问题
- 实体对象的抽象
- 实体对象的变更
- 关于实体类对象与XML的转换
- 关于实体类对象与XML的转换
- 关于实体类对象与XML的转换
- Spring Boot (一) 最简单跑起Hello World!
- 并发编程工具之一:CountDownLatch 用法
- 给PLSQL插上飞翔的翅膀-PLSQL优化
- log4j.xml配置
- Error creating bean with name 'redisTemplate' defined in file
- MorphDynaBean 对象转换具体的实体POJO对象
- jvm 开始压缩指针
- 数据安全加密技术分析
- oracle中sql语句查询优化(三)
- 阿里云短信验证服务整套demo教程
- 产品经理基本技能业务交流
- bzoj1036 树的统计Count 树链剖分
- 使用ant替换WAR包里面的文件
- Replugin host gradle插件分析