mikemccabe/json-patch-php

生成并应用 json-patch 对象

0.1.0 2015-01-05 21:19 UTC

This package is not auto-updated.

Last update: 2024-09-23 07:02:24 UTC


README

生成并应用 json-patch 对象。

实现了 IETF JSON-patch (RFC 6902) 和 JSON-pointer (RFC 6901)

http://tools.ietf.org/html/rfc6902 http://tools.ietf.org/html/rfc6901

与 Composer 一起使用

要将此库作为 Composer 依赖项添加到您的项目中,请在您的项目 composer.json 文件中包含以下部分

    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/mikemccabe/json-patch-php"
        }
    ],
    "require": {
        "mikemccabe/json-patch-php": "dev-master"
    }

然后,在您的项目代码中,使用来自 mikemccabe\JsonPatch 命名空间的 JsonPatch 类定义,如下所示

use mikemccabe\JsonPatch\JsonPatch;

入口点

  • JsonPatch::get($doc, $pointer) - 从 json 文档中获取值
  • JsonPatch::patch($doc, $patches) - 将补丁应用到 $doc 并返回结果
  • JsonPatch::diff($src, $dst) - 返回创建 $dst 从 $src 的补丁

参数是 PHP 数组,即 json_decode($json_string, 1) 的输出

(注意,您必须将 1 作为 json_decode 的第二个参数传递以获取数组。此库不支持 stdClass 对象。)

所有结构都直接实现为 PHP 数组。如果一个数组包含至少一个非数字键,则被视为“关联”的(例如,类似于 JSON “对象”)。

因此,空数组 ([]) 和空对象 ({}) 的比较是相同的,并且(例如)向空数组添加一个字符串键在这个实现中会成功,而在其他实现中可能会失败。

$simplexml_mode 提供了帮助,以便与简单xml样式的 XML 生成的数组一起工作,例如,重复的 XML 元素表示为数组。当 $simplexml_mode 启用时,具有标量值的叶子隐式地被视为长度为 1 的数组,因此此测试将成功

{ "comment": "basic simplexml array promotion",
  "doc": { "foo":1 },
  "patch": [ { "op":"add", "path":"/foo/1", "value":2 } ],
  "expected": { "foo":[1, 2] } },

此外,当 $simplexml_mode 为 true 时,在 patch() 返回时将 1 长度数组转换为标量。

测试

一些测试在一个子模块中(https://github.com/json-patch/json-patch-tests)。执行 'git submodule init' 来拉取这些,然后执行 'php runtests.php' 来运行它们。

Build Status