makasim/json-patch-php

生成和应用json-patch对象

0.1.2 2019-06-04 10:18 UTC

This package is auto-updated.

Last update: 2024-09-04 21:52:34 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所需的补丁

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

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

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

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

$simplexml_mode提供用于处理从XML产生的数组,类似于simplexml的风格 - 例如,重复的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时,1长度数组在从patch()返回时会转换为标量。

测试

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

Build Status