• 请不要在回答技术问题时复制粘贴 AI 生成的内容
leeqingshui
V2EX  ›  程序员

记录日志如何去除(清洗)JSON 字符串中的某个字段(比如三方调用时的超大报文字段)?

  •  
  •   leeqingshui · Sep 16, 2022 · 1716 views
    This topic created in 1344 days ago, the information mentioned may be changed or developed.

    在实际场景中,我们经常需要记录三方调用日志,当后续遇到问题时好定位与甩锅。

    在三方调用中,调用第三方文件上传接口进行文件传输非常常见,对文件上传接口记录日志时,由于 Base64 字符过大,按理说是不应当保存的。

    举个例子,对下面的请求报文,docContent字段存储了文件的 Base64 格式数据:

    {
      "data": {
        "tNo": "1605f4931032022090714473840657",
        "files": [
          {
            "fileCode": "HH03",
            "docContent": "超长的文件 Base64 字符超长的文件 Base64 字符超长的文件 Base64 字符超长的文件 Base64 字符 YQIAAAA=",
            "fileName": "一个文件",
            "fileSuffix": ".pdf"
          }
        ],
        "status": "2"
      }
    }
    

    那么,如何在记录日志时不记录该字段呢?

    各位大佬,有什么办法,可以比较方便的将上面的报文清洗为如下格式:

    {
      "data": {
        "tNo": "1605f4931032022090714473840657",
        "files": [
          {
            "fileCode": "HH03",
            "fileName": "一个文件",
            "fileSuffix": ".pdf"
          }
        ],
        "status": "2"
      }
    }
    

    我知道通过 OGNL 相关工具类可以通过一个表达式取出 JSON 报文的某个字段数据,比如:

    public void test(){
        // JSON 报文
        String json = "上面的示例 json 报文";
        // 表达式
        String expression = "data.files.fileCode"
        // 通过表达式获取 json 报文的某个字段属性
        String fileCode = ognlUtils.get(json, expression, String.class);
    }
    
    

    那么,有没有某种工具类也可以通过形如"data.files.fileCode"的表达式去除 JSON 报文的某个字段及值呢?

    各位大佬,想请教下~~~

    3 replies    2022-09-19 08:38:13 +08:00
    lmshl
        1
    lmshl  
       Sep 16, 2022
    写 JSON Viewer 的时候碰到过类似需求,实现方式很简单,就是
    public String truncate(json: Json) {
    如果 Array 元素超多,或者字符串超长,则截断至某个位置,比如"一个超长的字符串<截断剩余长度 9999>"
    递归
    }
    xaplux
        2
    xaplux  
       Sep 16, 2022
    JsonPath 或者 正则替换
    leeqingshui
        3
    leeqingshui  
    OP
       Sep 19, 2022
    @lmshl
    @xaplux 好的,感谢回复,我去了解下~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2897 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 14:56 · PVG 22:56 · LAX 07:56 · JFK 10:56
    ♥ Do have faith in what you're doing.