FindMemberPath

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 (mögliche Ungültigkeit beachten)  | 
 Eingänge
Name  | Typ  | 
|---|---|
v  | SJsonValue (mögliche Ungültigkeit beachten)  | 
/
 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  |