Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
JSON Parse
|
JSON Parse ( jsonString {; Typ}{; *} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
jsonString | String |
![]() |
Zu analysierender JSON String | |||||
Typ | Lange Ganzzahl |
![]() |
Typ, in den die Werte konvertiert werden sollen | |||||
* | Operator |
![]() |
Fügt Zeilenposition und Versatz jeder Eigenschaft hinzu, wenn zurückgegebener Wert ein Objekt ist. | |||||
Funktionsergebnis | Objekt, Mixed |
![]() |
Aus JSON String extrahierte Werte | |||||
Die Funktion JSON Parse analysiert den Inhalt einer in JSON formatierten Zeichenkette und extrahiert Werte, die Sie in einem 4D Feld oder einer Variablen speichern können. Diese Funktion deserialisiert Daten im JSON-Format; sie führt die entgegengesetzte Aktion der Funktion JSON Stringify durch.
In jsonString übergeben Sie die in JSON formatierte Zeichenkette, deren Inhalt Sie analysieren wollen. Sie muss korrekt formatiert sein, sonst wird ein Analyse-Fehler erzeugt. JSON Parse lässt sich von daher zum Bestätigen von JSON Strings verwenden.
Hinweis: Beim Verwenden von Zeigern müssen Sie zuerst JSON Stringify und dann JSON Parse aufrufen.
Standardmäßig, d.h. ohne den Parameter Typ, versucht 4D, den erhaltenen Wert in den Variablen- oder Feldtypen zu konvertieren, der zum Speichern der Ergebnisse verwendet wird - sofern einer definiert wurde. Andernfalls versucht 4D, den Typ einzuschätzen. Über den Parameter Typ können Sie die Interpretation des Typs erzwingen. Übergeben Sie eine der folgenden Konstanten unter dem Thema Feld und Variablentypen:
Konstante | Typ | Wert |
Is Boolean | Lange Ganzzahl | 6 |
Is collection | Lange Ganzzahl | 42 |
Is date | Lange Ganzzahl | 4 |
Is longint | Lange Ganzzahl | 9 |
Is object | Lange Ganzzahl | 38 |
Is real | Lange Ganzzahl | 1 |
Is text | Lange Ganzzahl | 2 |
Is time | Lange Ganzzahl | 11 |
Hinweise:
Übergeben Sie den optionalen Parameter * und ist der Parameter jsonString ein Objekt, enthält das zurückgegebene Objekt die zusätzliche Eigenschaft __symbols, die für jede Eigenschaft und Untereigenschaft des Objekts Pfad, Zeilenposition und Zeilenversatz anzeigt. Diese Information kann beim Debuggen nützlich sein. Die Eigenschaft __symbols hat folgende Struktur:
__symbols:{//Objektbeschreibung myAtt.mySubAtt...:{ //Pfad der Eigenschaft line:10, //Zeilennummer der Eigenschaft offset:35 //Versatz der Eigenschaft ab Zeilenbeginn } }
Hinweis: Der Parameter * wird ignoriert, wenn der zurückgegebene Wert nicht Objekt als Typ hat.
Beispiele für eine einfache Konvertierung:
C_REAL($r)
$r:=JSON Parse("42.17") //$r = 42,17 (Zahl)
C_LONGINT($el)
$el:=JSON Parse("120.13";Is longint) //$el=120
C_TEXT($t)
$t:=JSON Parse("\"Jahr 42\"";Is text) // $t="Jahr 42" (Text)
C_OBJECT($o)
$o:=JSON Parse("{\"name\":\"jean\"}")
// $o = {"name":"jean"} (4D Objekt)
C_BOOLEAN($b)
$b:=JSON Parse("{\"manager\":true}";Is Boolean) // $b=true
C_TIME($h)
$h:=JSON Parse("5120";Is time) //$h=01:25:20
Beispiel zum Konvertieren eines Datums:
$test:=JSON Parse("\"1990-12-25T12:00:00Z\"")
// $test=1990-12-25T12:00:00Z
C_DATE($date;$date2;$date3)
$date:=JSON Parse("\"2008-01-01T12:00:00Z\"";Is date)
//$date=01/01/08
$date2:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Is date)
//$date2=14/07/17 (Paris Zeitzone)
SET DATABASE PARAMETER(Dates inside objects;String type without time zone)
$date3:=JSON Parse("\"2017-07-13T23:00:00.000Z\"";Is date)
//$date3=13/07/17
Ist die aktuelle Datumseinstellung zum Speichern vom Typ Datum, schreiben Sie folgenden Code:
C_OBJECT($o)
C_TEXT($json)
C_DATE($birthday)
$json:="{\"name\":\"Marcus\",\"birthday\":\"2017-10-16\"}"
$o:=JSON Parse($json)
$birthday:=$o.birthday
//$birthday=16/10/17
Hinweis: Weitere Informationen dazu finden Sie auf der Seite Kompatibilität, Option "Verwende Datumstyp statt ISO Datumsformat in Objekten".
Dieses Beispiel zeigt die kombinierte Verwendung der Befehle JSON Stringify und JSON Parse:
C_TEXT($JSONContact)
C_OBJECT($Contact;$Contact2)
$Contact:=New object("name";"Monroe";"firstname";"Alan")
// JSON Stringify: Ein Objekt in einen JSON String konvertieren
$JSONContact:=JSON Stringify($Contact)
// JSON Parse: Ein JSON String in ein neues Objekt konvertieren
$Contact2:=JSON Parse($JSONContact)
Eine 4D Collection aus einem JSON Array erstellen:
C_COLLECTION($myCol)
$myCol:=JSON Parse("[\"Monday\",10,\"Tuesday\",11,\"Wednesday\",12,false]")
Nachfolgenden String durchlaufen und Zeilenposition und Versatz jeder Eigenschaft erhalten:
{ "alpha": 4552, "beta": [ { "echo": 45, "delta": "text1" }, { "echo": 52, "golf": "text2" } ] }
Sie können schreiben:
C_OBJECT($obInfo)
$obInfo=JSON Parse("json_string";Is object;*) //* um im zurückgegebenen Objekt $obInfo
//die Eigenschaft __symbols zu erhalten
Das Objekt $obInfo enthält:
{alpha:4552, beta:[{echo:45,delta:text1},{echo:52,golf:text2}], __symbols:{alpha:{line:2,offset:4}, beta:{line:3,offset:4}, beta[0].echo:{line:5,offset:12}, beta[0].delta:{line:6,offset:12}, beta[1].echo:{line:9,offset:12}, beta[1].golf:{line:10,offset:12}}}
Feld und Variablentypen
JSON PARSE ARRAY
JSON Stringify
JSON Validate
Produkt: 4D
Thema: JSON
Nummer:
1218
Erstellt: 4D v14
Geändert: 4D v16 R4
Geändert: 4D v16 R6
JSON validator
4D Programmiersprache ( 4D v20 R7)