Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discuss: add JSON Merge Patch (RFC 7396)? #877

Closed
nlohmann opened this issue Dec 14, 2017 · 2 comments
Closed

Discuss: add JSON Merge Patch (RFC 7396)? #877

nlohmann opened this issue Dec 14, 2017 · 2 comments

Comments

@nlohmann
Copy link
Owner

SQLite's json1 extension (https://www.sqlite.org/json1.html) supports JSON Merge Patch (https://tools.ietf.org/html/rfc7396). As the implementation is trivial and we already support JSON Patch, I think this could be a nice extension to the library.

Example:

#include <iostream>
#include "json.hpp"
#include <iomanip> // for std::setw

using json = nlohmann::json;

int main()
{
    // the original document
    json document = R"({
                "title": "Goodbye!",
                "author": {
                    "givenName": "John",
                    "familyName": "Doe"
                },
                "tags": [
                    "example",
                    "sample"
                ],
                "content": "This will be unchanged"
            })"_json;

    // the patch
    json patch = R"({
                "title": "Hello!",
                "phoneNumber": "+01-123-456-7890",
                "author": {
                    "familyName": null
                },
                "tags": [
                    "example"
                ]
            })"_json;

    // apply the patch
    document.merge_patch(patch);

    // output original and patched document
    std::cout << std::setw(4) << document << std::endl;
}

output:

{
    "author": {
        "givenName": "John"
    },
    "content": "This will be unchanged",
    "phoneNumber": "+01-123-456-7890",
    "tags": [
        "example"
    ],
    "title": "Hello!"
}

See PR #876 for more details.

Question

  • What do you think?
  • Any comments on the API, etc.?
@nlohmann nlohmann added the state: please discuss please discuss the issue or vote for your favorite option label Dec 14, 2017
@nlohmann
Copy link
Owner Author

nlohmann commented Jan 4, 2018

Any comments?

@nlohmann nlohmann removed the state: please discuss please discuss the issue or vote for your favorite option label Jan 9, 2018
@nlohmann nlohmann added this to the Release 3.1.0 milestone Jan 9, 2018
@nlohmann nlohmann self-assigned this Jan 9, 2018
@nlohmann
Copy link
Owner Author

Merged with #876.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant