JSONPatch
Swift μ 框架,用于创建符合 RFC6902 的 JSON 补丁 对象
要求
- iOS 8.0+ / macOS 10.13+
- Swift 4.2+
重要
框架依赖于 Objective C 运行时将键值路径转换为字符串,因此指向这些路径的属性需要在 Objective C 中可表示。为了实现这一点,您必须在每个变量声明处添加 @objc
注解。
class Patch: NSObject {
@objc var baz: String!
@objc var foo: String!
@objc var hello: [String]!
}
或者,如果所有类成员都在 Objective C 中可表示,您可以在类级别使用 @objcMembers
注解
@objcMembers class Patch: NSObject {
...
}
安装
Carthage
要使用 Carthage 将 JSONPatch 集成到您的 Xcode 项目中,请将其指定在您的 Cartfile
中
github "peterringset/JSONPatch" ~> 2.0
CocoaPods
要使用 CocoaPods 将 JSONPatch 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target '<Your Target Name>' do
pod 'PRJSONPatch', '~> 2.0'
end
Swift 包管理器
要将包依赖项添加到您的 Xcode 项目中,请选择文件 > Swift 包 > 添加包依赖项,并输入 https://github.com/peterringset/JSONPatch
。
使用方法
使用 Swift 中的 keypath 创建 JSON patch 对象。
import JSONPatch
let stringChanges: [JSONPatch<Patch>] = [
.replace(\.baz, value: "boo"),
.remove(\.foo)
]
let arrayChanges: [JSONPatch<Patch>] = [
.add(\.hello, value: ["world"])
]
创建好一系列更改后,可以使用 JSONEncoder
将其转换为 json 数据。
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let data = try! encoder.encode(changes)
print(String(data: data, encoding: .utf8)!)
这将打印以下 json 数据:
[
{
"op" : "replace",
"path" : "\/baz",
"value" : "boo"
},
{
"op" : "remove",
"path" : "\/foo"
},
{
"op" : "add",
"path" : "\/hello",
"value" : [
"world"
]
}
]
JSONPatch
支持在 RFC6902 中指定的所有动词:`add`、`remove`、`replace`、`move`、`copy` 和 `test`。