fix(json_family): Fix JSON.SET handling for nested fields #4710
+65
−42
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.
fixes #4381
The main bug was in the
ConvertExpressionToJsonPointer
method. I don’t like the idea of parsing a JSON path directly. Instead, I decided to use our JSON path lexer to parse it first and then convert it into JsonPointer. For now, this approach should work fine.I also spent a significant amount of time ensuring support for both our parsing method,
json::ParsePath
, and the jsoncons parsing method, depending on thejsonpathv2
flag. However, I found some bugs in the jsoncons parsing method, and it also needs modifications to allow us to extract path tokens and traverse them to convert them into a JsonPointer. And jsoncons does not provide any built-in methods to convertjson_expression
intojson_pointer
. So, I think this is the best solution for now.Also, in this PR, I made some code cleanups.