[node-core-library] Include support for parsing JSON files with object keys that are reserved words and fix an issue with JSON schema validation. #4736
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
With the upgrade to use
ajv
for JSON schema validation, we accidentally introduced a regression where using the"uniqueItems": true
option in a schema for an array with items that are objects causes an exception to be thrown when callingJsonFile.loadAndValidate
. This is because thejju
parses JSON files by default does not populate the functions fromObject.prototype
on parsed JSON objects andajv
usesa.valueOf() === b.valueOf()
as part of its deep comparison of objects (via thefast-deep-equal
package). ThevalueOf
function isn't populated on objects, so this function call fails.This PR adds the
reserved_keys: 'replace'
jju
parse option to populate these functions. This also allows parsing of objects with these properties. This introduces an edge case where a JSON object with a"valueOf"
key will fail with a similar error in a similar scenario, but this is a much less common case than the currently-broken functionality.How it was tested
Introduced tests for these scenarios.