我的要求是在记录 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 ,因此我无法更改密钥名称
使用 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":"*****"}
const MaskData = require('./maskdata'); 此版本已弃用,请勿使用