【问题标题】:How can I mask json using json-masker for fields with "-" in it?如何使用 json-masker 为带有“-”的字段屏蔽 json?
【发布时间】:2023-04-08 19:49:01
【问题描述】:

我的要求是在记录 JSON 的某些字段时屏蔽它们。我正在处理 node.js。我使用了 node.js 的 json-masker 库。在“白名单”参数中传递名称中带有“-”的属性的 JSON 路径时,出现词法错误。

JSON

   {  
   "attribute1":"value1",
   "attribute2":"value2",
   "attribute-name":"value3"
   }

代码

const masker = require('json-masker');
const mask= masker({
whitelist: ['$.attribute1','$.attribute-name']
});

错误

    Error Lexical error on line 1. Unrecognized text.
    $.attribute-name

另外,有没有办法只指定需要屏蔽的属性,而不是指定不需要屏蔽的属性(如白名单中指定的那样)。 请建议是否有更好的方法可以使用任何其他函数/库来执行此操作。

请注意,我收到的是这个 JSON,所以我无法更改密钥名称

【问题讨论】:

  • 您可以查看@Pooja 的答案吗?如果它不适合您,请发表评论,或者如果它有效,则将其标记为已接受

标签: node.js json logging


【解决方案1】:

正确的语法是'$["attribute-name"]' 而不是'$.attribute-name'

$ 字段由 json-masker 的依赖项 jsonpath 处理。这个问题在他们的一个 github 问题 (#90) 中进行了讨论,并在那里提供了解决方案。

【讨论】:

    【解决方案2】:

    使用 maskdata npm 模块:https://www.npmjs.com/package/maskdata

    您可以毫不费力地屏蔽包含“-”的 json 字段。此外,您也可以屏蔽嵌套字段。

    例子:

    const MaskData = require('./maskdata');
    
    const maskJSONOptions = {
      // Character to mask the data. Default value is '*'
      maskWith : "*",
    
      // It should be an array
      // Field names to mask. Can give multiple fields.
      fields : ['level1.level2.level3.field3', 'level1.level2.field2', 'level1.field1', 'value1'] 
    };
    
    const nestedObject = {
      level1: {
        field1: "field1",
        level2: {
          field2: "field2",
          level3: {
            field3: "field3",
          }
        }
      },
      value1: "value"
    };
    const maskedObj = MaskData.maskJSONFields(nestedObject, defaultJSONMaskOptions2);
    
    //Output : {"level1":{"field1":"******","level2":{"field2":"******","level3":{"field3":"******"}}},"value1":"*****"}
    
    

    【讨论】:

      猜你喜欢
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2021-11-04
      • 2021-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多