Skip to main content
Skip table of contents

TbeCbAnything

TbeCbAnything

ab Version 7.2.1.2

Diese Klasse ermöglicht den Umgang mit JSON-Objekten.

Damit können JSON-Objekte erstellt, modifiziert, gespeichert oder geladen und ausgelesen werden.

Methoden

Beschreibung

FromString

Liest das JSON-Objekt als String ein.

Parameter

Beschreibung

cJsonString:C

JSON-Objekt als String

FromYaml

Liest das JSON-Objekt von einem String im YAML-Format ein. (ab Version 7.6.1.7)

Parameter

Beschreibung

cYamlString:C

String im YAML-Format

ToString:C

Gibt das JSON-Objekt als String zurück.

ToFormattedString:C

Gibt das JSON-Objekt als formatierten String mit Zeilenumbrüchen und Einrückungen zurück.

ToYaml:C

Gibt das JSON-Objekt als String im YAML-Format zurück (ab Version 7.6.1.7)

LoadFromFile

Liest das JSON-Objekt aus einer Datei ein.

Parameter

Beschreibung

cFileName:C

Pfad der Datei

LoadFromYamlFile

Liest das JSON-Objekt im YAML-Format aus einer Datei ein. (ab Version 7.6.1.7)

Parameter

Beschreibung

cFileName:C

Pfad der Datei

SaveToFile

Speichert das JSON-Objekt in eine Datei.

Parameter

Beschreibung

cFileName:C

Pfad der Datei

SaveToYamlFile

Speichert das JSON-Objekt im YAML-Format in eine Datei. (ab Version 7.6.1.7)

Parameter

Beschreibung

cFileName:C

Pfad der Datei

IsRootArray:L

True wenn das Hauptelement ein Array ist.

RootArray:O

Liefert im Fall von IsRootArray = True, das Hauptelement als Array zurück.

KeyAt:C

Liefert den Key-Namen für das x-te Element.

Parameter

Beschreibung

nIndex:N

Index des Elements

KeyExists:L

True falls der Key-Name existiert.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

PathExists:L

True falls der Pfad existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

DeletePath:L

Löscht ein Element.Rückgabe True, falls Löschung erfolgreich war.

Parameter

Beschreibung

aPath:A

Pfad des Elements

RenameKeyPath:L

Benennt ein Element um.Rückgabe True, falls Umbenennung erfolgreich war.

Parameter

Beschreibung

aPath:A

Pfad des Elements

cNewKey:C

Neuer Schlüssel-Name

ValueType:N

Gibt den Typen eines Elements zurück.
jvtString
jvtInteger
jvtExtended
jvtBoolean
jvtNull
jvtTimestamp
jvtObject
jvtArray

Parameter

Beschreibung

aPath:A

Pfad des Elements

IsEmpty:L

True, falls keine Elemente enthalten sind.

IsDefault:L

True, falls es sich um das Default Objekt handelt, siehe getObjectDef().

IsObject:L

Immer True.

IsArray:L

Immer False. Nur für TbeCbAnythingArray True.

Count:N

Gibt die Anzahl der Element zurück.

Clear

Entfernt alle Elemente.

getString:C

Liefert für das Element den Wert als String. Fehler falls das Element nicht vom Typ String ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getStringDef:C

Verhält sich wie getString() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

cDefault:C

Default Wert falls das Element nicht existiert

getInteger:N

Liefert für das Element den Wert als Integer. Fehler falls das Element nicht vom Typ Integer ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getIntegerDef:N

Verhält sich wie getInteger() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

nDefault:N

Default Wert falls das Element nicht existiert

getExtended:N

Liefert für das Element den Wert als Extended. Fehler falls das Element nicht vom Typ Extended ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getExtendedDef:N

Verhält sich wie getExtended() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

nDefault:N

Default Wert falls das Element nicht existiert

getBoolean:L

Liefert für das Element den Wert als Boolean. Fehler falls das Element nicht vom Typ Boolean ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getBooleanDef:L

Verhält sich wie getBoolean() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

lDefault:L

Default Wert falls das Element nicht existiert

getTimestamp:D

Liefert für das Element den Wert als DateTime. Fehler falls das Element nicht vom Typ DateTime ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getTimestampDef:D

Verhält sich wie getTimestamp() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

dDefault:D

Default Wert falls das Element nicht existiert

getDate:D

Liefert für das Element den Wert als DateTime. Fehler falls das Element nicht vom Typ String im Format “YYYY-MM-DD“ ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getDateDef:D

Verhält sich wie getDate() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Wert anstelle eines Fehlers zurückgegeben wird.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getObject:O

Liefert das Element als Objekt (TbeCbAnything). Fehler falls das Element nicht vom Typ Objekt ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getObjectDef:O

Verhält sich wie getObject() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Objekt anstelle eines Fehlers zurückgegeben wird.Weitere VerknüpfungenIsDefault().

Parameter

Beschreibung

aPath:A

Pfad des Elements

getArray:O

Liefert das Element als Array (TbeCbAnythingArray). Fehler falls das Element nicht vom Typ Array ist oder dieses nicht existiert.

Parameter

Beschreibung

aPath:A

Pfad des Elements

getArrayDef:O

Verhält sich wie getArray() mit der Ausnahme, dass falls das Element nicht existiert, ein Default Array anstelle eines Fehlers zurückgegeben wird. Siehe auch IsDefault().

Parameter

Beschreibung

aPath:A

Pfad des Elements

appendObject:O

Fügt ein Objekt-Element (TbeCbAnything) hinzu und gibt dieses zurück.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

appendArray:O

Fügt ein Array-Element (TbeCbAnythingArray) hinzu und gibt dieses zurück.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

appendString

Fügt ein String-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

cValue:C

Wert des Elements

appendInteger

Fügt ein Integer-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

nValue:N

Wert des Elements

appendExtended

Fügt ein Extended-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

nValue:N

Wert des Elements

appendBoolean

Fügt ein Boolean-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

lValue:L

Wert des Elements

appendTimestamp

Fügt ein Timestamp/DateTime-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

dValue:D

Wert des Elements

appendDate

Fügt ein Datumswert im Format “YYYY-MM-DD“ hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

dValue:D

Wert des Elements

appendNull

Fügt ein Null-Element hinzu.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

setString

Verändert den Wert eines String-Elements. Falls das Element nicht vom Typ String ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

cValue:C

Neuer Wert des Elements

setInteger

Verändert den Wert eines Integer-Elements. Falls das Element nicht vom Typ Integer ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

nValue:N

Neuer Wert des Elements

setExtended

Verändert den Wert eines Extended-Elements. Falls das Element nicht vom Typ Extended ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

nValue:N

Neuer Wert des Elements

setBoolean

Verändert den Wert eines Boolean-Elements. Falls das Element nicht vom Typ Boolean ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

lValue:L

Neuer Wert des Elements

setTimestamp

Verändert den Wert eines Timestamp-Elements. Falls das Element nicht vom Typ Timestamp ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

dValue:D

Neuer Wert des Elements

setDate

Verändert den Wert eines String-Elements zu einem Datum im Format “YYYY-MM-DD“. Falls das Element nicht vom Typ String ist oder es nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

cKey:C

Schlüssel-Name des Elements

dValue:D

Neuer Wert des Elements

forcesetString

Verhält sich so wie setString() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht String ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

cValue:C

Neuer Wert des Elements

forcesetInteger

Verhält sich so wie setInteger() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht Integer ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

nValue:N

Neuer Wert des Elements

forcesetExtended

Verhält sich so wie setExtended() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht Extended ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

nValue:N

Neuer Wert des Elements

forcesetBoolean

Verhält sich so wie setBoolean() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht Boolean ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

lValue:L

Neuer Wert des Elements

forcesetTimestamp

Verhält sich so wie setTimestamp() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht Timestamp ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

dValue:D

Neuer Wert des Elements

forcesetDate

Verhält sich so wie setDate() mit der Ausnahme, dass es keinen Fehler gibt wenn der Type nicht String ist. Hierbei erfolgt eine automatische Typ-Umwandlung.

Parameter

Beschreibung

aPath:A

Pfad des Elements

dValue:D

Neuer Wert des Elements

forcesetNull

Verändert den Typen eines Elements zu NULL. Falls das Element nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

aPath:A

Pfad des Elements

forcesetObject

Verändert den Typen eines Elements zu Objekt (TbeCbAnyhting). Falls das Element nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

aPath:A

Pfad des Elements

forcesetArray

Verändert den Typen eines Elements zu Array (TbeCbAnyhtingArray). Falls das Element nicht existiert gibt es einen Fehler.

Parameter

Beschreibung

aPath:A

Pfad des Elements

Hinweis

aPath:A ist ein eindimensionales Array mit Zahlen und/oder String Werten welche den Pfad zu einem JSON-Element beschreibt.
Eine Zahl steht für den Zugriff auf das Element an der x-ten Stelle.
Ein String steht für den Zugriff über den Schlüssel-Namen (Key) des Elements.

Beispiel

CODE
// JSON Objekt erzeugen und per Code parsen und ausgeben
// Modifizeren des JSON-Objekts und Speicherung in Datei
// Laden des JSON-Objekts und Vergleich ob Speicherung erfolgreich war
// Sicheres auslesen von ggf. nicht vorhanden Elementen

|oJSON, cJSONFormatted|

function FillJSON(oJSON)
   | oArr, oArr2, oArr3, oObj, oObj2, oObj3|
// Element 1
   oArr := oJSON.appendArray('root'),
   oObj := oArr.appendObject(),
   oObj.appendInteger('id', 1),
   oObj.appendString('type', 'donut'),
   oObj.appendString('name', 'cake'),
   oObj.appendExtended('ppu', 0.55),
   oObj2 := oObj.appendObject('batters'),
   oArr2 := oObj2.appendArray('batter'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1001),
   oObj3.appendString('type', 'Regular'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1002),
   oObj3.appendString('type', 'Chocolate'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1003),
   oObj3.appendString('type', 'Blueberry'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1004),
   oObj3.appendString('type', 'Devil''s Food'),
   
   oArr2 := oObj.appendArray('topping'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5001),
   oObj2.appendString('type', 'None'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5002),
   oObj2.appendString('type', 'Glazed'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5005),
   oObj2.appendString('type', 'Sugar'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5007),
   oObj2.appendString('type', 'Powdered Sugar'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5006),
   oObj2.appendString('type', 'Chocolate with Sprinkles'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5003),
   oObj2.appendString('type', 'Chocolate'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5004),
   oObj2.appendString('type', 'Maple'),
   
// Element 2
   oObj := oArr.appendObject(),
   oObj.appendInteger('id', 2),
   oObj.appendString('type', 'donut'),
   oObj.appendString('name', 'Raised'),
   oObj.appendExtended('ppu', 0.55),
   oObj2 := oObj.appendObject('batters'),
   oArr2 := oObj2.appendArray('batter'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1001),
   oObj3.appendString('type', 'Regular'),
   
   oArr2 := oObj.appendArray('topping'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5001),
   oObj2.appendString('type', 'None'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5002),
   oObj2.appendString('type', 'Glazed'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5005),
   oObj2.appendString('type', 'Sugar'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5003),
   oObj2.appendString('type', 'Chocolate'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5004),
   oObj2.appendString('type', 'Maple'),
   
// Element 3
   oObj := oArr.appendObject(),
   oObj.appendInteger('id', 3),
   oObj.appendString('type', 'donut'),
   oObj.appendString('name', 'Old Fashioned'),
   oObj.appendExtended('ppu', 0.55),
   oObj2 := oObj.appendObject('batters'),
   oArr2 := oObj2.appendArray('batter'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1001),
   oObj3.appendString('type', 'Regular'),
   oObj3 := oArr2.appendObject(),
   oObj3.appendInteger('id', 1002),
   oObj3.appendString('type', 'Chocolate'),
   
   oArr2 := oObj.appendArray('topping'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5001),
   oObj2.appendString('type', 'None'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5002),
   oObj2.appendString('type', 'Glazed'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5003),
   oObj2.appendString('type', 'Chocolate'),
   oObj2 := oArr2.appendObject(),
   oObj2.appendInteger('id', 5004),
   oObj2.appendString('type', 'Maple'),
end,

function ModifyJSON(oJSON)
   |oObj|
   writeln('Element gelöscht?', oJSON.DeletePath({'root', 1, 'batters'})),
   writeln('Element existiert?', oJSON.PathExists({'root', 0, 'topping', 3, 'type'})),
   
   oObj := oJSON.getObject({'root', 2, 'batters', 'batter', 0}),
   oObj.forcesetInteger('type', 1),
   writeln('Element in Integer umgewandelt. Neuer Wert =', oObj.getInteger('type')),
end,

function PrintJSON(oElement)
   |i, oItemType, cKey|
   for i := 0 to oElement.Count() - 1 do
      
      if oElement.IsObject() then
         cKey := oElement.KeyAt(i),
      else
         cKey := Str(i),
      endif,
      
      oItemType := oElement.ValueType(i),
      case oItemType
            of jvtObject:: PrintJSON(oElement.getObject(i)),
            of jvtArray:: PrintJSON(oElement.getArray(i)),
            of jvtString:: writeln(cKey, oElement.getString(i)),
            of jvtInteger:: writeln(cKey, oElement.getInteger(i)),
            of jvtExtended:: writeln(cKey, oElement.getExtended(i)),
            of jvtTimestamp:: writeln(cKey, oElement.getTimestamp(i)),
            of jvtBoolean:: writeln(cKey, oElement.getBoolean(i)),
            of jvtNull:: writeln(cKey, 'NULL'),
      endcase,
      
   next,
end,

function TestDef(oJSON)
   |cType, i|
   i := 0,
   while true do
      cType := oJSON.getStringDef({'root', i, 'topping', 3, 'type'}, 'DUMMY'),
      if cType = 'DUMMY' then
         break,
      endif,
      
      writeln('Test type at level ' + str(i), cType),
      i++,
   next,
end,


oJSON := CreateObject('TbeCbAnything'),
startseq
   FillJSON(oJSON),
   PrintJSON(oJSON),
   ModifyJSON(oJSON),
   
   oJSON.SaveToFile('c:\temp\json.txt', true),
   cJSONFormatted := oJSON.ToFormattedString(),
always
   DestroyObject(oJSON),
stopseq,

oJSON := CreateObject('TbeCbAnything'),
startseq
   oJSON.LoadFromFIle('c:\temp\json.txt'),
   writeln('JSON Speicherung und Laden erfolgreich?', oJSON.ToFormattedString() == cJSONFormatted),
   TestDef(oJSON),
always
   DestroyObject(oJSON),
stopseq,

Weitere Verknüpfungen

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.