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

手机网站js触屏滑动图片特效北京购物网站建设公司

手机网站js触屏滑动图片特效,北京购物网站建设公司,中国建筑装饰网唐迪夫,长春信息网发布信息我有个朋友在公司遇到一个需求:某个接口,面向不同的用户返回的字段数不一样字段数。 我举例两种场景并且都给一个方案他,同时也供大家参考。 场景1: 接口返回的是List 或者直接就是entity,且entity对应某张数据表&…

我有个朋友在公司遇到一个需求:某个接口,面向不同的用户返回的字段数不一样字段数。
我举例两种场景并且都给一个方案他,同时也供大家参考。

  1. 场景1:
    接口返回的是List 或者直接就是entity,且entity对应某张数据表,不需要考虑嵌套有其他实体的情况。
public class A{private Long id;private String name;}

假设在写这个核心方法前我们从数据库或者某个地方已经得到这个用户要展示的字段,即一个列表

List<String> fields 

这种情况下直接把实体转Map类型,根据fields,取对应的key,value,这种可以写个AOP拦截来轻松实现全局配置。

    public static Object getLastMap(Object v, List<String> fields) {ObjectMapper objectMapper = new ObjectMapper();Map<String, Object> map = objectMapper.convertValue(v, new TypeReference<Map<String, Object>>() {});Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, Object> entry = iterator.next();if (fields.contains(entry.getKey())) continue;iterator.remove(); // 删除不是 "x" 和 "y" 的键值对}return map;}
  1. 场景2:
    接口返回的是List 或者直接就是entity,要考虑嵌套有其他实体的情况。
public class A{private Long id;private B b;private String name;private String x;}public class B{private Long id;}

假设在写这个核心方法前我们从数据库或者某个地方已经得到这个用户要展示的字段,即一个字典
key对应是全部实体的名称,value对应这些实体的变量名称列表。

Map<String, List<String>> fieldsDictionary;

转换核心:

@JsonSerialize(using = CustomSerializer.class)public static class CustomSerializer extends JsonSerializer<TBdMaterialVo> {private Map<String, List<String>> fieldsDictionary;public CustomSerializer(Map<String, List<String>> fieldsDictionary) {this.fieldsDictionary = fieldsDictionary;}@Overridepublic void serialize(A value, JsonGenerator gen, SerializerProvider serializers) throws IOException {// 本人比较懒,这里直接用fieldsDictionary的key来用,大家自行修改gen.writeStartObject();if (fieldsDictionary.containsKey("b")) {// 直接调用 serializeMaterialL 来处理 materialL 的序列化gen.writeObjectField("b", value.getMaterialL());serializeMaterialL(value.getMaterialL(), gen, fieldsDictionary.get("b"));}if (fieldsDictionary.containsKey("id")) {gen.writeObjectField("id", value.getFmaterialid());}gen.writeEndObject();}private void serializeMaterialL(B value, JsonGenerator gen, List<String> fields) throws IOException {if (fields.contains("id")) {gen.writeObjectField("id", value.getFmaterialid());}}}

使用:

        A vo = new A();vo.setId(1L);vo.setName("xx");B b= new B();b.setId(11L);vo.setMaterialL(b);Map<String, List<String>> fieldsDictionary = new HashMap<>();fieldsDictionary.put("b", Arrays.asList("id"));fieldsDictionary.put("id", Arrays.asList("x"));fieldsDictionary.put("name", Arrays.asList("x"));ObjectMapper mapper = new ObjectMapper();SimpleModule module = new SimpleModule();module.addSerializer(A.class, new A.CustomSerializer(fieldsDictionary));mapper.registerModule(module);String jsonResult = mapper.writeValueAsString(vo);return success(JSON.parseObject(jsonResult, Map.class));

结束语:很久都不写博客了,如果有帮助点点赞,点赞多那么给大家分享其他的小妙招。

http://www.yayakq.cn/news/948208/

相关文章:

  • 网站建设的好处和目的wordpress的文章多重筛选
  • 平远网站建设wordpress神主题
  • 可以用手机做网站吗如何介绍网站模板下载
  • 梅河口建设局网站沈阳网站关键词优化
  • 广州网站建设案例建设网站开题报告
  • 湖州网站开发区火炬手一个网站做数据维护需要多久
  • 广州建设局网站首页下wordpress
  • 济宁网站建设专家专业网站建设费用包括
  • 深圳app设计网站建设重庆seo小z博客
  • 网站推广推广简述制作网站的主要流程
  • 滨海天津网站建设广州网站建设定制多少钱
  • 郑州企业网站建设兼职外贸网站产品分析
  • 机关门花网站建设沈阳创新网站建设报价
  • 网站开发具体问题部门网站建设注意事项
  • 我的南京网站ip网站查询服务器
  • 企业信息网做seo网站 公司
  • 电影网站制作教程及步骤某班级网站建设方案论文
  • 长沙 网站优化wordpress 大小
  • 网站规划与建设心得体会搭建网站流程视频
  • 系统与网站的区别copyright wordpress
  • html5在线编辑器网站seo站群软件
  • 永州企业网站建设工装效果图网站
  • 手机投资理财网站建设品牌推广公司如何推广
  • 建设旅游网站的工作方案中企动力邮箱官方网站
  • 网站备案幕布照片怎么算合格四海网络网站建设建站
  • 西安网站建设设计公司南通seo网站排名优化
  • 网页设计自学网站大良网站智能推广价格
  • 网络营销的网站建设报告对网络平台的优化有哪些建议
  • 设计电子商务网站商务网站建设平台
  • .net网站费用东莞企业网站设计