zoukankan      html  css  js  c++  java
  • 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中加入了更新时间。

  • 相关阅读:
    [模板]洛谷T3369 普通平衡树 链表&普通Treap
    C++语法知识点整理
    [模板]洛谷T3373 线段树 模板2
    [模板]洛谷T3372 线段树 模板1
    [模板]洛谷T3368 树状数组 模板2
    JSON
    code first迁移和部署
    序列化 (C#)
    Linq小记
    文件和注册表
  • 原文地址:https://www.cnblogs.com/lailailai/p/4578658.html
Copyright © 2011-2022 走看看