JSON ist ein ähnliches Format wie XML, aber normalerweise kürzer und einfacher zu zergliedern.
Etliche Webservices arbeiten jetzt mit JSON.
JSON offizieller Website: JSON
Das Englische Originaltutorial.
Mit der neuen JSON Library, kann man leicht JSON Strings zergliedern und erstellen.
Als Beispiel werden wir folgenden JSON String analysieren:
Dieses Beispiel kommt von json.org/examples.
Geschweifte Klammern entsprechen einem Objekt und eckige Klammern entsprechen einem Array.
Objekte enthalten Schlüsselwort/Wert Paare und Arrays enthalten Listen von Elementen. Kommas trennen die Elemente.
In diesem Beispiel, ist der Wert der obersten Ebene ein Objekt. Dieses Objekt enthält ein einziges Objekt mit dem Schlüsselwort "menu".
"value" in dem "menu" Objekt ist ein anderes Objekt des mehrere Werte enthält.
Wir holen das "menuitem" Element, das ein Array von Elementen enthält und zeigen die Werte des "value" Elements in LogCat an.
In der Analyse des Strings werden JSON Objekte in Maps umgewandelt und Arrays werden in Listen umgewandelt.
Wir lesen den String von einer Datei die wir mit dem Files Manager (Files tab) zugefügt hatten.
JSON.NextObject zergliedert den String und gibt eine Map mit den zergliederten Daten zurück. Diese Methode darf nur aufgerufen werden wenn der Wert der obersten Ebene ein Objekt ist (was üblicherweise der Fall ist).
Jetzt arbeiten wir mit Map1 um die Werte zu erhalten.
Wir deklarieren eine weitere Map mit dem Name 'm'.
Dem Objekt "menu" ist die Map 'm' zugewiesen.
Jetzt wird die Map m dem Objekt "popup" zugewiesen.
Das Array "menuitem" ist der MenuItems Liste zugewiesen.
Wir werden die Elemente durchlaufen (Maps in unserem Fall) und die Werte mit dem Schlüsselwort "value" in LogCat anzeigen.
Die Anzeige in LogCat ist:
New
Open
Close
Ein JSON Strings wird ähnlich erstellt. Wir erstellen eine Map oder eine Liste die die Werte enthält und dann konvertieren wir sie mit JSONGenerator in den JSON String:
JSONGenerator kann mit einer Map oder Liste initialisiert werden.
Die Umwandlung der Daten in einen JSON String wird durch den Aufruf von ToString oder ToPrettyString durchgeführt.
ToPrettyString fügt Einzüge hinzu was leichter zu lesen und zu debuggen ist.
Etliche Webservices arbeiten jetzt mit JSON.
JSON offizieller Website: JSON
Das Englische Originaltutorial.
Mit der neuen JSON Library, kann man leicht JSON Strings zergliedern und erstellen.
Als Beispiel werden wir folgenden JSON String analysieren:
B4X:
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}
Geschweifte Klammern entsprechen einem Objekt und eckige Klammern entsprechen einem Array.
Objekte enthalten Schlüsselwort/Wert Paare und Arrays enthalten Listen von Elementen. Kommas trennen die Elemente.
In diesem Beispiel, ist der Wert der obersten Ebene ein Objekt. Dieses Objekt enthält ein einziges Objekt mit dem Schlüsselwort "menu".
"value" in dem "menu" Objekt ist ein anderes Objekt des mehrere Werte enthält.
Wir holen das "menuitem" Element, das ein Array von Elementen enthält und zeigen die Werte des "value" Elements in LogCat an.
In der Analyse des Strings werden JSON Objekte in Maps umgewandelt und Arrays werden in Listen umgewandelt.
Wir lesen den String von einer Datei die wir mit dem Files Manager (Files tab) zugefügt hatten.
B4X:
Dim JSON As JSONParser
Dim Map1 As Map
JSON.Initialize(File.ReadString(File.DirAssets, "example.json"))
Map1 = JSON.NextObject
Dim m As Map 'helper map for navigating
Dim MenuItems As List
m = Map1.Get("menu")
m = m.Get("popup")
MenuItems = m.Get("menuitem")
For i = 0 To MenuItems.Size - 1
m = MenuItems.Get(i)
Log(m.Get("value"))
Next
Jetzt arbeiten wir mit Map1 um die Werte zu erhalten.
Wir deklarieren eine weitere Map mit dem Name 'm'.
B4X:
m = Map1.Get("menu")
B4X:
m = m.Get("popup")
B4X:
MenuItems = m.Get("menuitem")
Wir werden die Elemente durchlaufen (Maps in unserem Fall) und die Werte mit dem Schlüsselwort "value" in LogCat anzeigen.
B4X:
For i = 0 To MenuItems.Size - 1
m = MenuItems.Get(i)
Log(m.Get("value"))
Next
New
Open
Close
Ein JSON Strings wird ähnlich erstellt. Wir erstellen eine Map oder eine Liste die die Werte enthält und dann konvertieren wir sie mit JSONGenerator in den JSON String:
B4X:
Dim Data As List
Data.Initialize
Data.Add(1)
Data.Add(2)
Data.Add(3)
Data.Add(Map1) 'add the previous map loaded from the file.
Dim JSONGenerator As JSONGenerator
JSONGenerator.Initialize2(Data)
Msgbox(JSONGenerator.ToPrettyString(2), "")
Die Umwandlung der Daten in einen JSON String wird durch den Aufruf von ToString oder ToPrettyString durchgeführt.
ToPrettyString fügt Einzüge hinzu was leichter zu lesen und zu debuggen ist.
Last edited by a moderator: