JSON: jasckson 字段 过滤
有这样一个场景存在一个model类如果User,这里省略了getter/setter方法
class User {
String name;
String uuid;
Long created;
Long updated;
Attr attr;
}
class Attr {
String field1;
String field2;
Long field3;
}
在编写后台CRUD API时,CRD都比较简单原模原样存取这个User Model即可。但是涉及到Update这个操作时,如果用户完完整整的返回了已经更改后的object,还是原模原样去存储么?万一请求把一些诸如created这样的字段也给改了怎么办?可以采取几种办法:
1. 限制请求发送。让发送方使用与服务端配套的APIClient,在client中对这些情况进行处理
方法很多,但是如果有人绕过APIClient直接发请求,就很危险了。
2. 过滤请求。服务端在收到这些数据后过滤其中不需要或者不允许更新的部分。
可以对收到的包含update数据的json体进行一些过滤,删除一些字段,这样再反序列化生成对应model时这些值就没了。
ObjectNode
root = (ObjectNode) mapper.readTree(updateJson); root.remove(updateBlackList); root.put("updated", System.currentTimeMillis()); return root.toString();
其中的mapper时jackson包里的ObjectMapper,root即为输入json转换后的节点。同时向请求json中加入了更新时间。
JSON: jasckson 字段 过滤的更多相关文章
- 使用Expression实现数据的任意字段过滤(1)
在项目常常要和数据表格打交道. 现在BS的通常做法都是前端用一个js的Grid控件, 然后通过ajax的方式从后台加载数据, 然后将数据和Grid绑定. 数据往往不是一页可以显示完的, 所以要加分页: ...
- 使用Expression实现数据的任意字段过滤(2)
上一篇<使用Expression实现数据的任意字段过滤(1)>, 我们实现了通过CriteriaCollectionHandler对象来处理集合数据过滤.通过适当的扩展, 应该可以满足一般 ...
- go json null字段的转换
最近试了试go中对json null字段进行转换,代码如下: struct 转 json: package main import ( "encoding/json" " ...
- MyBatis里json型字段到Java类的映射
一.简介 我们在用MyBatis里,很多时间有这样一个需求:bean里有个属性是非基本数据类型,在DB存储时我们想存的是json格式的字符串,从DB拿出来时想直接映射成目标类型,也即json格式的字符 ...
- django xadmin多对多字段过滤(含filter的反向查询)
要实现的功能: 继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能. 功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前 程序会将所有用户都显示出 ...
- 使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型字段
业务扩展字段在PostgreSQL数据库中经常会使用json格式的数据来存储,然而mybatis默认是没有实现json类型字段对应的TypeHandler,所以一般我们需要自定义mybatis的Typ ...
- 写出java8实现对List<User>中的username字段过滤出不等于张三的数据
写出java8实现对List<User>中的username字段过滤出不等于张三的数据... 对...这个是一道面试题.当时没有看过java8的新特性...所以有点懵. 看完之后感觉 真. ...
- MVC中构建Linq条件、排序、Selector字段过滤
代码: System.Linq.Expressions.Expression<Func<Domain.S_ROLE, bool>> expressWhere1 = (c =&g ...
- 如何在K3 WISE BOS集成开发工具中自定义字段过滤条件
1.结论 对于输入过滤条件后BOS报“列名不正确”的过滤条件,要在列名前增加x2标识 无效的过滤 FNumber ,,,,,) 正确的过滤 x2.FNumber ,,,,,) 2.完全可以不看的探索过 ...
随机推荐
- 说一下acad的bug及问题
using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk. ...
- underscore.js源码研究(5)
概述 很早就想研究underscore源码了,虽然underscore.js这个库有些过时了,但是我还是想学习一下库的架构,函数式编程以及常用方法的编写这些方面的内容,又恰好没什么其它要研究的了,所以 ...
- WCF:wsdl
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- Ubuntu 16.04 安装 python3.7 && 修复安装后无法打开 Terminal 的问题
安装 python3.7 下载安装包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 解压 tar -xvzf Python ...
- .net core跨平台发布至centos7
在要发布的项目目录下输入发布命令 dotnet publish -r centos.-x64 发布成功后,文件位于xxx\bin\Debug\netcoreapp2.0\centos.7-x64\pu ...
- Mac终端配置,DIY你的Terminal (iTerm 2 + Oh My Zsh)
使用mac osx一年以来,自带的Terminal终端一直都是白底黑字,食之无味,越来越缺乏新鲜感,怎么也得想个法子来刺激下眼球. 不然花那么多大洋买你回来是要哪般,难道真是为来学习工作??? 怎么可 ...
- IDEA中Git的使用基础
场景概述 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 ...
- CentOS 6.9上inotify-tools 安装及使用方法
文章目录 [隐藏] 一.检查系统内核版本 三.下载安装(下载有点慢) 四.查看inotify默认参数 五.修改inotify参数 六.创建实时监控脚本 (file 里面放的需要监听的目录) 七:实例操 ...
- Redis安装以及主从实现
Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合)和zset(有序 ...