一个用于创建符合 RFC6902 规范的 JSON patch 对象的 Swift 微框架
Package.swift
描述文件声明了 iOS 16 和 macOS 13 的系统要求,但实际上最低要求是 iOS 16.4 和 macOS 13.3。这是因为该框架现在依赖于 Swift 将 keypath 转换为字符串的实现,而该 API 仅在 iOS 16.4 和 macOS 13.3 及更高版本中可用。
要将包依赖项添加到您的 Xcode 项目,请选择 “File” > “Swift Packages” > “Add Package Dependency”,然后输入 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
。