~0
expands to ~
so /~01
expands to /~1
I guess they mean that you shouldn't "double expand" so that expanded /~1
should not be expanded again to //
and thus must not match the documents "/"
key (which would happen if you double expanded). Neither should you expand literals in the source document so the "~1"
key is literally that and not equivalent to the expanded "/"
. But I repeat that's my guess about the intention of this example, the real intention may be different.
The example is indeed really bad, in particular since it's using a "test"
operation and doesn't specify the result of that operation. Other examples like the next one at A.15 at least says its test operation must fail, A.14 doesn't tell you if the operation should succeed or not. I assume they meant the operation should succeed, so that implies /~01
should match the "~1"
key. That's probably all about that example.
If I were to write an implementation I'd probably not worry too much about this example and just look at what other implementations do - to check if I'm compatible with them. It's also a good idea to look for test suites of other projects, for example I found one from http://jsonpatch.com/ at https://github.com/json-patch/json-patch-tests
~
with~0
and/
with~1
. – Airboat