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

怎么做网站快捷方式百度云手机登录入口

怎么做网站快捷方式,百度云手机登录入口,哪个网站可以做ppt,郑州中原区最新疫情参考资料 Jackson 2.x 系列【7】注解大全篇三JsonUnwrapped 以扁平的数据结构序列化/反序列化属性Jackson扁平化处理对象 目录 一. 前期准备1.1 前端1.2 实体类1.3 Controller层 二. 扁平化序列反序列化数据2.1 序列化数据2.2 反序列化数据 三. 前缀后缀处理属性同名四. Map数…

参考资料

  1. Jackson 2.x 系列【7】注解大全篇三
  2. @JsonUnwrapped 以扁平的数据结构序列化/反序列化属性
  3. 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;charset=utf-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 ResponseEntity<Test34Entity> 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类型的数据,List<Bean>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结构来组装数据,直接扁平化提交即可,对于一些不使用Vue,React框架等前台框架的项目有用,能写起来更简单。

  • 前台数据结构
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注解将HouseBlogTag属性拍扁放到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 实体类,进行如下修改

  • 使用@JsonAnySetter@JsonAnyGetter注解
  • addBlogTagMap,getBlogTagMap,setBlogTagMap方法名中的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 Map<String, BlogTag> blogTagMap;@JsonAnySetterpublic void addBlogTagMap(String key, BlogTag value) {blogTagMap.put(key, value);}@JsonAnyGetterpublic Map<String, BlogTag> getBlogTagMap() {return blogTagMap;}public void setBlogTagMap(Map<String, BlogTag> blogTagMap) {this.blogTagMap = blogTagMap;}
}

⏹然后在前台查看效果,可以看到外侧的blogTagMap属性名不见了。

在这里插入图片描述

http://www.tj-hxxt.cn/news/125409.html

相关文章:

  • 凡客vancl的网站标题百度有钱花人工客服
  • 初学者自己做网站软件开发公司推荐
  • 网站目录结构网络营销的概念
  • 用php做一网站有哪些东西产品推广网站哪个好
  • 红旗网站建设竞价排名采用什么计费方式
  • 开发做游戏的网站关键词优化流程
  • 星沙网站建设公司找客户资源的网站
  • 华为云做网站陕西网站关键词自然排名优化
  • 国外成人做视频网站有哪些泉州seo代理计费
  • 比较好的logo设计网站百度云账号登录
  • dedecms做网站全教程上海seo推广平台
  • seo外贸 网站公司推荐新疆今日头条新闻
  • 网站建设公司业务跟不上临沂百度seo
  • 洛阳网站建设招聘信息哪个合肥seo好
  • 宁波网站建设优化中国军事新闻最新消息
  • wordpress论坛搭建seo广告投放
  • 做网站免费模板怎么上传到空间成都seo
  • 做外贸建网站多少钱短视频推广引流方案
  • 沈阳教做网站seo外包公司需要什么
  • 上海搬家公司价目表seo系统培训
  • 企业门户定制网站建设公司如何做好推广引流
  • 有一个网站怎么做cpcnba篮网最新消息
  • 哪里发布网站开发需求小红书代运营
  • 中文域名指向同一个网站网站seo查询站长之家
  • 手机网站怎么做淘宝客今日新闻最新消息大事
  • 武汉营销型网站源码万物识别扫一扫
  • 网站建设流程总结成都最新热门事件
  • 重庆规模最大的建网站公司100个成功营销策划案例
  • 网站后台编辑器不能用公司seo推广营销网站
  • 湖北网站建设路seo工具包