diff --git a/src/json-patch.hpp b/src/json-patch.hpp index 80fe1df..39a579b 100644 --- a/src/json-patch.hpp +++ b/src/json-patch.hpp @@ -28,10 +28,13 @@ public: json_patch &replace(const json::json_pointer &, json value); json_patch &remove(const json::json_pointer &); + json &get_json() { return j_; } + const json &get_json() const { return j_; } + operator json() const { return j_; } private: - json j_; + json j_ = nlohmann::json::array(); static void validateJsonPatch(json const &patch); }; diff --git a/src/json-validator.cpp b/src/json-validator.cpp index 77d701f..6ede7c8 100644 --- a/src/json-validator.cpp +++ b/src/json-validator.cpp @@ -436,12 +436,12 @@ class logical_combination : public schema for (auto &s : subschemata_) { first_error_handler esub; - json_patch old_patch(patch); + auto oldPatchSize = patch.get_json().size(); s->validate(ptr, instance, patch, esub); if (!esub) count++; else - patch = old_patch; + patch.get_json().get_ref().resize(oldPatchSize); if (is_validate_complete(instance, ptr, e, esub, count)) return;