JSONPatch

一个用于创建符合 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 及更高版本中可用。

安装

Swift 包管理器

要将包依赖项添加到您的 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 中指定的所有动词:addremovereplacemovecopytest