跳到主要内容

4.6. test

4.6. test

"test" 操作用于测试目标位置处的值是否等于指定值.

操作对象 MUST 包含一个 "value" 成员, 该成员承载要与目标位置处的值进行比较的值.

目标位置处的值 MUST 等于 "value" 的值, 该操作才被视为成功.

这里, "相等" 是指目标位置处的值和 "value" 所承载的值具有相同的 JSON 类型, 并且按照该类型的以下规则被视为相等:

  • strings: 如果包含相同数量的 Unicode 字符, 且其码点逐字节相等, 则视为相等.

  • numbers: 如果数值上相等, 则视为相等.

  • arrays: 如果包含相同数量的值, 且按照本列表中的类型特定规则, 每个值都可视为等于另一个数组中对应位置处的值, 则视为相等.

  • objects: 如果包含相同数量的成员, 且通过比较键 (作为字符串) 和值 (使用本列表中的类型特定规则), 每个成员都可视为等于另一个对象中的某个成员, 则视为相等.

  • literals (false, true, and null): 如果二者相同, 则视为相等.

注意, 所执行的比较是逻辑比较; 例如, 数组成员值之间的空白并不重要.

另请注意, 对象成员序列化时的顺序并不重要.

例如:

{ "op": "test", "path": "/a/b/c", "value": "foo" }