This gem augments Ruby's built-in JSON library to support merging JSON blobs in accordance with the draft-snell-merge-patch draft.
Add this line to your application's Gemfile:
gem 'json-merge_patch'
And then execute:
$ bundle
Or install it yourself as:
$ gem install json-merge_patch
First, require the gem:
require 'json/merge_patch'
Then, use it:
# The example from http://tools.ietf.org/html/draft-snell-merge-patch-08#section-2
document = <<-JSON
{
"title": "Goodbye!",
"author" : {
"givenName" : "John",
"familyName" : "Doe"
},
"tags":["example","sample"],
"content": "This will be unchanged"
}
JSON
merge_patch = <<-JSON
{
"title": "Hello!",
"phoneNumber": "+01-123-456-7890",
"author": {
"familyName": null
},
"tags": ["example"]
}
JSON
JSON.merge(document, merge_patch)
# =>
{
"title": "Hello!",
"phoneNumber": "+01-123-456-7890",
"author" : {
"givenName" : "John",
},
"tags":["example"],
"content": "This will be unchanged"
}
If you'd prefer to operate on pure Ruby objects rather than JSON strings, you
can construct a MergePatch
object instead.
JSON::MergePatch.new({}, {"foo" => "bar"}).call
=> {"foo"=>"bar"}
Also check out http://json-merge-patch.herokuapp.com/,
which is a Rails app that serves up json-merge-patch
responses.
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request