JSON-Pointer¶
Diese Umsetzung bezieht sich auf RFC6901.
Der ABNF Syntax eines JSON Pointer ist:
json-pointer = *( "/" reference-token )
reference-token = *( unescaped / escaped )
unescaped = %x00-2E / %x30-7D / %x7F-10FFFF
; %x2F ('/') and %x7E ('~') are excluded from 'unescaped'
escaped = "~" ( "0" / "1" )
; representing '~' and '/', respectively
Ausgangspunkt ist folgendes Dokument.
{
"a":[
{
"c":1
}
]
}
Wert auslesen¶
Über die Methode Pointer::getValue()
kann ein Wert aus einem Dokument ausgelesen werden.
Mit der Methode Pointer::getValueOrDefault()
kann noch ein Standardwert angegeben werden.
Dieser wird zurückgegeben, insofern der Pointer auf einen nicht vorhandenen Wert zeigt.
Wert setzen¶
Über Pointer::setValue()
kann ein Wert im Dokument gesetzt werden.
Fehlende Schlüssel/Werte werden dabei automatisch angelegt.
$doc=(new \Alvine\Json\Decoder)->decode('{"a":[{"c":1}]}');
$pointer=new Pointer('/a/d');
// Wert setzen
$pointer->setValue($doc, 44);
Das Ergebnis ist dann folgendes Dokument
{
"a":[
{
"c":1
},
{
"d":44
}
]
}
Wird als Schlüssel ein Strich -
verwendet, so wird
ein nummerischer Index verwendet.
(new Pointer('/a/-/d'));
Wert löschen¶
Mit der Methode Pointer::removeValue($doc)
kann ein Wert entfernt werden.
$pointer->removeValue($doc);