JSONPatch is a a swift module implements json-patch RFC6902. JSONPatch uses JSONSerialization from Foundation, and has no dependencies on third-party libraries.
The implementation uses the JSON Patch Tests project for unit tests to validate its correctness.
1.0 - Feature complete.
To use JSONPatch within your project. Add the "RMJSONPatch" into your Podfile
:
platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
pod 'RMJSONPatch', :git => 'https://github.com/raymccrae/swift-jsonpatch.git'
end
Add JSONPatch as a dependency to your projects Package.swift. For example: -
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "YourProject",
dependencies: [
// Dependencies declare other packages that this package depends on.
.package(url: "https://github.com/raymccrae/swift-jsonpatch.git", .branch("master"))
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "YourProject",
dependencies: ["JSONPatch"]),
]
)
A more detailed explanation of JSONPatch is given in Usage.md.
import JSONPatch
let sourceData = Data("""
{"foo": "bar"}
""".utf8)
let patchData = Data("""
[{"op": "add", "path": "/baz", "value": "qux"}]
""".utf8)
let patch = try! JSONPatch(data: patchData)
let patched = try! patch.apply(to: sourceData)
import JSONPatch
let sourceData = Data("""
{"foo": "bar"}
""".utf8)
let targetData = Data("""
{"foo": "bar", "baz": "qux"}
""".utf8)
let patch = try! JSONPatch(source: sourceData, target: targetData)
let patchData = try! patch.data()
Apache License v2.0