FindMemberPath
![FindMemberPath 1:](Images/jpg/13439169931__Web.jpg)
Diese Methode sucht in einem JSON-Dokument nach einem bestimmten Property und gibt dieses zurück. Das Property wird hierbei nach dessen Pfad im Dokument spezifiziert. Wenn kein entsprechendes Property gefunden wird, wird 0 zurückgegeben.
Syntax
METHOD FindMemberPath : SJsonValue
VAR_INPUT
v : SJsonValue
END_VAR
VAR_IN_OUT CONSTANT
member : STRING;
END_VAR
Rückgabewert
Name | Typ |
---|---|
FindMemberPath | SJsonValue |
Eingänge
Name | Typ |
---|---|
v | SJsonValue |
/
Ein-/Ausgänge
Name | Typ |
---|---|
member | STRING |
Beispielaufruf:
jsonDoc := fbJson.ParseDocument(sExistingJsonDocument);
jsonProp := fbJson.FindMemberPath(jsonDoc, sPath);
Der Zugriff auf verschachtelte Objekte funktioniert nach dem Schema a/b/c, um eine Variable in einer JSON-Hierarchie zu finden. Der Aufruf für die Variable c des folgenden JSON-Dokuments lautet:
jsonProp := fbJson.FindMemberPath(jsonDoc, 'a/b/c');
{
"a":{
"b":{
"c": 123
}
}
}
Unterstützung für Arrays
Die Methode unterstützt JSON-Dokumente mit Arrays ab TwinCAT-Version >3.1.4024.35. Mithilfe des Zeichens # kann auf Elemente eines Arrays zugegriffen werden.
jsonProp := fbJson.FindMemberPath(jsonDoc, '#1/Third#2');
[
{
"First": 4
},
{
"Second": 12,
"Third": [
1,
2,
3
],
"Fourth": {
"a": true
}
},
]
Der Beispielaufruf greift auf das zweite Element des äußeren Arrays zu (#1), anschließend auf das dritte Element des Arrays unter dem Unterelement Third.
Behandlung von Sonderfällen
Das Einfügen des Zeichens ~ sorgt für die Sonderbehandlung innerhalb eines Pfades. Die folgende Tabelle listet die verschiedenen Möglichkeiten auf.
Ausdruck | Ergebnis | Beispiel |
---|---|---|
~0 | ~ wird als Zeichen im String verwendet. | Test/Hallo~0123 wird zu Test/Hallo~123 |
~1 | Der Ausdruck wird durch das Zeichen / ersetzt, was nicht als Trenner, sondern als Teil des Strings interpretiert wird. | Test/Hallo~1123 wird Test/Hallo/123 |
~2 | Der Ausdruck wird durch das Zeichen # ersetzt, was nicht als Array-Index, sondern als Teil des Strings interpretiert wird. | Test/Hallo~2123 wird zu Test/Hallo#123 |