View Full Version : JSON in RPG verarbeiten
dschroeder
11-07-16, 14:57
Hallo,
wir möchten ein JSON-Dokument parsen. Weiß jemand, ob es dafür bereits Funktionen von IBM gibt? Brigitta Hauser und Klaus Peter Luttkus haben auf der Konferenz Vorträge gehalten, in denen sie auf die Funktionen in SYSTOOLS hingewiesen haben.
Wir sind noch auf 7.1, allerdings mit dem aktuellsten TR. Weiß jemand, ob es da bereits Funktionen dafür gibt? Bzw. ab welchem Release gibt es die Funktionen?
Gibt es vielleicht einen anderen Weg, JSON zu parsen? Ich möchte das allerdings im RPG machen bzw. von dort aus steuern.
Laut IBM-Doku gibt es diese 3 Wege:
db2nosql -- The DB2 JSON command line processor
The DB2 JSON Java API
SYSTOOLS.BSON2JSON -- A function to retrieve a JSON document stored within a DB2 for i table
Über einen command line processor in der QSHELL kann ich mir das auch nicht gerade gut vorstellen.
Die SYSTOOLS-Funktion finde ich bei uns nicht. Klingt aber auch nicht gerade so, als wäre das das passende.
Wir macht ihr das bzw. macht ihr das überhaupt?
Dieter
S.Neinawaie
11-07-16, 15:14
Hallo
Es gibt da einen YAJL RPG Wrapper von Scott Klement: https://www.scottklement.com/yajl/
Damit kannst du JSON generieren & parsen.
LG,
Sam
Nachtrag: Rainer Ross kann dir bestimmt um einiges mehr dazu erzählen. Er hat soweit ich weiß YAJL im Produktiveinsatz.
andreaspr@aon.at
11-07-16, 16:15
Wenn du in der QSHELL folgenden Befehl absetzt:
/QIBM/ProdData/OS/SQLLIB/bin/db2nosql -setup enable
Werden in der SYSTOOLS die JSON SQL Funktionen erstellt.
Geht auch schon mit 7.1 bei entsprechenden PTF stand.
Näheres kannst du auch hier nachlesen:
http://www.mcpressonline.com/database/techtip-store-and-parse-json-data-natively-with-db2-for-i.html
lg Andreas
dschroeder
11-07-16, 16:17
Vielen Dank, Sam.
Das Tool habe ich mir bereits mit einem Kollegen zusammen angesehen. Ich fände es nur schade, etwas kompliziertes zu bauen oder zu nutzen, wenn IBM da vielleicht schon das passende zur Verfügung stellt. Deshalb meine Frage, ob es da in den SYSTOOLS oder sonstwo etwas passendes gibt.
Wir denken auch über die Idee nach, JSON in XML umzuwandeln und dann einzulesen. Da scheint es mehr zu geben (XML-INTO oder eben von IBM gelieferte SQL-Funktionen.)
Dieter
dschroeder
11-07-16, 16:18
Wenn du in der QSHELL folgenden Befehl absetzt:
/QIBM/ProdData/OS/SQLLIB/bin/db2nosql -setup enable
Werden in der SYSTOOLS die JSON SQL Funktionen erstellt.
Geht auch schon mit 7.1 bei entsprechenden PTF stand.
Näheres kannst du auch hier nachlesen:
http://www.mcpressonline.com/database/techtip-store-and-parse-json-data-natively-with-db2-for-i.html
lg Andreas
Das hört sich ziemlich cool an! Danke für den Tipp. Werde ich ausprobieren!
Dieter
dschroeder
11-07-16, 16:21
Habe folgendes auf unserer Testmaschine abgeschickt:
/QIBM/ProdData/OS/SQLLIB/bin/db2nosql -setup enable
Als Ergebnis kam:
nosql>CDJSN0114E Ungültige Befehlssyntax
Fehlerdetails werden unten aufgeführt, sind aber möglicherweise nicht die Ursache des Problems.
/QIBM/ProdData/OS/SQLLIB/bin/db2nosql -setup enable
^
Fehlerdetails: invalid flag after regular expression
Spaltennummer: 7
dschroeder
11-07-16, 16:24
Vielleicht haben wir auf der Testmaschine aber auch noch nicht den passenden PTF-Stand. Werde das morgen mal mit unserer Administration klären.
Nochmals vielen Dank.
Dieter
andreaspr@aon.at
12-07-16, 07:49
Vielleicht haben wir auf der Testmaschine aber auch noch nicht den passenden PTF-Stand. Werde das morgen mal mit unserer Administration klären.
Nochmals vielen Dank.
Dieter
Laut Web ist für IBM i 7.1 TR10 mit Database Group PTF Level 34 nötig.
andreaspr@aon.at
12-07-16, 08:06
Hier ist auch noch ein anderer Link
http://www.ibm.com/developerworks/ibmi/library/i-json-store-technology/
dschroeder
12-07-16, 17:06
Das Setup ist bei uns jetzt durchgelaufen. Das setup-Programm erwartete ein Journal in der SYSTOOLS. Das gab es seltsamerweise auf beiden Maschinen nicht. Nachdem das angelegt wurde, lief das setup problemlos durch. Die JSON-Funktionen sind jetzt in SYSTOOLS vorhanden.
Nochmals Danke für die Hilfe.
Aber doch noch eine Frage: Gibt es zu den Funktionen auch eine Doku? Im Information Center hat die Suchfunktion nichts passendes ergeben. Google war auch nicht sehr ergiebig. Ich gehe aber davon aus, dass IBM nicht einfach Funktionen zur Verfügung stellen würde, ohne eine Dokumentation dazu zu liefern.
Ich möchte ja im wesentlichen JSON lesen. Die Funktion JSON_VAL2 klingt für mich so, als könnte sie einen JSON-Wert ermitteln. Google bringt für die Frage nach "SYSTOOLS JSON_VAL2" aber keine Ergebnisse für IBM i (soweit ich das sehe und verstehe).
Dieter