You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In my project I found it necessary to sometimes remove elements (though not objects) from json arrays. I was able to do this by adding a separate merge strategy which takes a negative image of an array, such that, e.g.
test = {
"AnArray":["An element", "A second element"]
}
removal = {
"AnArray":["An element"]
}
new = merger.merge(test, removal)
new = {
"AnArray":["A second element"]
}
The code for this is quite similar to that for append:
class RemoveStrategy(ArrayStrategy):
def _merge(
self, walk, base, head, schema, sortByRef=None, sortReverse=None, **kwargs
):
new_array = []
for array_element in base.val:
if array_element not in head.val:
new_array.append(array_element)
base.val = new_array
self.sort_array(walk, base, sortByRef, sortReverse)
return base
def get_schema(self, walk, schema, **kwargs):
schema.val.pop("maxItems", None)
schema.val.pop("uniqueItems", None)
return schema
I am happy to just have this within my project, but I wished to offer that if there is interest in adding this feature to the main package then I can write up the requisite tests and doc entry.
The text was updated successfully, but these errors were encountered:
In my project I found it necessary to sometimes remove elements (though not objects) from json arrays. I was able to do this by adding a separate merge strategy which takes a negative image of an array, such that, e.g.
The code for this is quite similar to that for append:
I am happy to just have this within my project, but I wished to offer that if there is interest in adding this feature to the main package then I can write up the requisite tests and doc entry.
The text was updated successfully, but these errors were encountered: