当前位置: 首页 > news >正文

专注网站制作网站建设捌金手指花总六

专注网站制作,网站建设捌金手指花总六,修改wordpress登录框,网络培训内容参考资料 Jackson 2.x 系列【7】注解大全篇三JsonUnwrapped 以扁平的数据结构序列化/反序列化属性Jackson扁平化处理对象 目录 一. 前期准备1.1 前端1.2 实体类1.3 Controller层 二. 扁平化序列反序列化数据2.1 序列化数据2.2 反序列化数据 三. 前缀后缀处理属性同名四. Map数…参考资料 Jackson 2.x 系列【7】注解大全篇三JsonUnwrapped 以扁平的数据结构序列化/反序列化属性Jackson扁平化处理对象 目录 一. 前期准备1.1 前端1.2 实体类1.3 Controller层 二. 扁平化序列反序列化数据2.1 序列化数据2.2 反序列化数据 三. 前缀后缀处理属性同名四. Map数据的处理 一. 前期准备 1.1 前端 $(function() {bindEvent(); });function bindEvent() {$(#btn).click(() {// 准备提交到后端的数据const jsonData {id: 112,name: 前端来的name,houseId: 前端来的houseId,address: 前端来的address,blogId: 前端来的blogId,blogName: 前端来的blogName};$.ajax({url: /test34/get_data,type: POST,data: JSON.stringify(jsonData),contentType: application/json;charsetutf-8,success: function (data, status, xhr) {console.log(data);}});}); }1.2 实体类 import com.fasterxml.jackson.annotation.*; import lombok.Data;Data public class Test34Entity {private String id;private String name;JsonUnwrappedprivate House house;JsonUnwrappedprivate BlogTag blogTag; }import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class House {private String houseId;private String address; }import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class BlogTag {private String blogId;private String blogName; }1.3 Controller层 mport org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;import java.io.IOException;Controller RequestMapping(/test34) public class Test34Controller {GetMapping(/init)public ModelAndView init() {ModelAndView modelAndView new ModelAndView();modelAndView.setViewName(test34);return modelAndView;}PostMapping(/get_data)public ResponseEntityTest34Entity getData(RequestBody Test34Entity data) throws IOException {System.out.println(data);Test34Entity entity new Test34Entity();// 设置基本类型的属性值entity.setId(1355930);entity.setName(贾飞天);// 设置自定义类型(bean)的属性值entity.setHouse(new House(house_id_1, 地球));entity.setBlogTag(new BlogTag(tag_id_1, tag_name_1));return ResponseEntity.ok(entity);} }二. 扁平化序列反序列化数据 ⏹JsonUnwrapped注解只能处理Bean类型的数据ListBean和Map键,Bean等数据类型是无法处理的。 2.1 序列化数据 给需要扁平化处理的Bean添加JsonUnwrapped注解需要扁平化处理的Bean还需要有构造函数必须有构造函数否则后台接收数据时会报错。这样前台扁平化提交数据的时候后台可以用一个类组合多个类的方式接收数据 ⏹使用JsonUnwrapped注解之前 前台需要提交如下的数据结构前台的数据结构层次需要根据后台的Bean结构层次调整 const jsonData {id: 112,name: 前端来的name,house: {houseId: 前端来的houseId,address: 前端来的address},blogTag: {blogId: 前端来的blogId,blogName: 前端来的blogName } };后台使用的数据结构 Data public class Test34Entity {private String id;private String name;private House house;private BlogTag blogTag; }⏹使用JsonUnwrapped注解之后前台无需根据后台的Bean结构来组装数据直接扁平化提交即可对于一些不使用VueReact框架等前台框架的项目有用能写起来更简单。 前台数据结构 const jsonData {id: 112,name: 前端来的name,houseId: 前端来的houseId,address: 前端来的address,blogId: 前端来的blogId,blogName: 前端来的blogName };后台数据结构 Data public class Test34Entity {private String id;private String name;JsonUnwrappedprivate House house;JsonUnwrappedprivate BlogTag blogTag; }⏹实质上是Jackson 通过JsonUnwrapped注解将House和BlogTag属性拍扁放到Test34Entity实体类中。右下图可以看到数据自动完成了封装。 2.2 反序列化数据 ⏹不使用JsonUnwrapped注解前台的json数据结构和后台的Bean相同。 ⏹使用JsonUnwrapped注解后台的嵌套的Bean属性被展平后返回给前台。 三. 前缀后缀处理属性同名 如下图所示由于Test34Entity类和组合类的属性名相同从而导致属性丢失。 ⏹可以在JsonUnwrapped注解上指定前缀或后缀来避免属性重名问题 import com.fasterxml.jackson.annotation.*; import lombok.Data;Data public class Test34Entity {private String id;private String name;JsonUnwrapped(prefix house_, suffix _suffix)private House house;JsonUnwrapped(prefix blog_, suffix _suffix)private BlogTag blogTag;Datapublic static class BlogTag {private String id;private String name;}Datapublic static class House {private String id;private String address;} }⏹反映到前端的截图如下所示 四. Map数据的处理 JsonUnwrapped注解原生不支持Map由下图所示前台得到的json中blogTagMap属性依然存在。 ⏹将Test34Entity 实体类进行如下修改 使用JsonAnySetterJsonAnyGetter注解addBlogTagMapgetBlogTagMapsetBlogTagMap方法名中的blogTagMap部分和属性名blogTagMap保持一致。 import com.fasterxml.jackson.annotation.*; import lombok.Data;import java.util.Map;Data public class Test34Entity {private String id;private String name;private MapString, BlogTag blogTagMap;JsonAnySetterpublic void addBlogTagMap(String key, BlogTag value) {blogTagMap.put(key, value);}JsonAnyGetterpublic MapString, BlogTag getBlogTagMap() {return blogTagMap;}public void setBlogTagMap(MapString, BlogTag blogTagMap) {this.blogTagMap blogTagMap;} }⏹然后在前台查看效果可以看到外侧的blogTagMap属性名不见了。
http://www.hkea.cn/news/14496413/

相关文章:

  • 网站内页做友链京东优惠券网站建设
  • 嘉祥网站建设哪家便宜公众号开发难吗
  • 建设通类型网站叫啥网站排名提升工具免费
  • 可以做分销的网站现在建设网站都用什么软件
  • 各种网站app购买了域名怎么使用
  • 个体网站建设网站建设风格
  • 医院网站 整站源码wordpress头像同步
  • 公司注册地址与实际经营地址不符长春seo服务
  • 网站开发从入门到实战生产型或服务型企业网站有哪些
  • 爱玖货源站网站解析设置
  • 上海网站建设价位如何设定网站关键词
  • 物流公司网站建设模板旅游网站建设翻译
  • 大型网站建设翻译英文营销案例100例小故事
  • 网站建设与管理任务分工高端网站价格
  • 网站安全建设总结报告网站建设加盟合作
  • 高端网站设计费用免费制作论坛网站模板
  • 什么网站可以免费做视频的软件下载网站彩票怎么做
  • 做分类信息网站如何郴州新网交友
  • 专业做网站设计公司价格百度云盘下载
  • 网站的维护和更新电子商务网站建设的核心
  • 网站开发案列三门峡企业网站建设公司
  • 济宁亿峰科技做网站一年多少费用网络营销课程论文
  • 网站建设难点和重点开发公司网签的流程
  • 店面门头在线设计网站个人门户网站备案
  • 主机屋网站空间的IPwordpress 禁用可视化
  • 微信网站开发视频站长工具排名分析
  • 彩票网站 模块黄页网如何注册
  • 摄影行业网站wordpress 两边
  • 淘客网站佣金建设在哪做网站建设
  • dedecms精仿学校网站模板宜家在线设计