Lade...
 

CX_JSON_OBJECT::SetDataType

CX_JSON_OBJECT::SetDataType
CX_JSON_ARRAY::SetDataType

Beschreibung:

Diese Methode setzt den Datenfeldtyp für künftige Aufrufe von Put / PutTyped auf der JSON-Struktur. Wird ein JSON aus einem String geparsed oder neu erstellt, dann sind initial keine expliziten Datentypen den Feldern zu gewiesen (auch wenn die Felder Werte enthalten). Das heißt auch, dass Put alle übergebenen Werte als STRING in die JSON-Struktur setzt und PutTyped den am besten passenden Typen für das übergebene Argument wählt.

Nachdem ein Datentyp per SetDataType für einen Pfad gesetzt wurde, wird bei Put und PutTyped das Argument in den gewählten Zieltyp konvertiert. In der nachfolgenden Tabelle ist aufgeführt, welche Typ-Konstanten in welchen JSON-Typ übersetzt werden.

ClassiX-Typ-Konstante JSON-Typ
CX_JSON_OBJECT Object
CX_JSON_ARRAY Array
NUMERIC number
INTEGER number
STRING string
CX_BOOLEAN bool

 

Der Aufruf von SetDataType hat keinen Einfluss auf die Daten, die bereits im JSON gesetzt sind.

Der an SetDataType übergebene Pfad kann beliebig tief verschachtelt sein und sich auf alle Elemente eines JSON-Arrays beziehen, indem der Index in den eckigen Index-Klammern weggelassen wird.

Code-Beispiel:
Var(json) CreateTransObject(CX_JSON_OBJECT) -> json // All flag elements are of type bool "flag[]" CX_BOOLEAN json Call(SetDataType) // 4. flag is of type string though "flag[3]" STRING json Call(SetDataType) // The "valid" field of each "user" object is supposted to be bool "user[].valid" CX_BOOLEAN json Call(SetDataType) 1 json Put(flag[0]) TRUE json Put(flag[1]) "1" json Put(flag[2]) 5 json Put(flag[3]) 5 json Put(flag[4]) 1 json Put(user[0].valid) // Result-JSON: { flag: [ true, true, true, "5", true ], user: [ { "valid": true } ] }

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top

CX_JSON_OBJECT
CX_JSON_ARRAY

Die JSON-Struktur für welche der Typ gesetzt werden soll
  Top-1 TYPE Der Datentyp des Felds
  Top-2 STRING Der Zugriffspfad dessen Typ gesetzt werden soll
Stack(Out) Top

-

 
Funktionsaufruf: Call(SetDataType)