-
-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Labels
Description
This is ether expected behavior or a bug, depending on my (mis)understanding of the allowEmptyReplacement flag in the FilterBase documentation.
When using replace to remove an element with allowEmptyReplacement: true, the remaining json keys seem to be duplicated. allowEmptyReplacement: false (default) does not do this.
Here's a quick and dirty sample.
I am attempting to remove the Results element entirely (this applies to Ignore as well).
const { Readable } = require('stream')
const { parser } = require('stream-json/Parser');
const { replace } = require('stream-json/filters/Replace');
const { stringer } = require('stream-json/Stringer');
const sample = {
StatusCode: 200,
StatusMessage: "Success",
Results: "test"
}
const s = new Readable.from([JSON.stringify(sample)])
const pipeline = s.pipe(parser())
.pipe(replace({ filter: 'Results', replacement: [], allowEmptyReplacement: true }))
.pipe(stringer())
.pipe(process.stdout)allowEmptyReplacement: true result - unexpected:
{
"StatusCode":200,
"StatusCode":,
"StatusMessage":"Success",
"StatusMessage":
}allowEmptyReplacement: false result - as expected:
{
"StatusCode":200,
"StatusMessage":"Success",
"Results":null
}Desired result:
{
"StatusCode":200,
"StatusMessage":"Success"
}If expected, how can I avoid duplicating the keys?