[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jan 2012
    Beiträge
    1.102

    JSON in RPG verarbeiten

    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:
    Code:
    • 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

  2. #2
    Registriert seit
    Jul 2011
    Beiträge
    31
    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.

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    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/databas...db2-for-i.html

    lg Andreas

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    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/databas...db2-for-i.html

    lg Andreas
    Das hört sich ziemlich cool an! Danke für den Tipp. Werde ich ausprobieren!

    Dieter

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  8. #8
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von dschroeder Beitrag anzeigen
    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.

  9. #9
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  10. #10
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    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

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Ja die Doku ist leider nicht immer vollständig.
    Im Skript für meine Schulungen habe ich hin und wieder selbst mühsam herausfinden müssen wie diverse Funktionen arbeiten.

    In diesem Fall musst du den JSON String oder File zuerst in ein CLOB konvertieren und dann mit der Funktion JSON2BSON in ein BLOB konvertieren.

    Hier ein Beispiel:
    Code:
    {"myroot": { "id": 123} }
    Code:
    CREATE OR Replace VARIABLE pranlib.jsonclob clob(16M);
    CREATE OR Replace VARIABLE pranlib.jsonblob blob(16M);
    
    SET pranlib.jsonclob = GET_CLOB_FROM_FILE('/home/prouza/json/test1.json');
    
    SET pranlib.jsonblob = SYSTOOLS.JSON2BSON(pranlib.jsonclob);
    
    VALUES (systools.JSON_VAL2(pranlib.jsonblob , 'myroot.id', 'i:na'))
    JSON_VAL2
    1. Parameter: Die Daten als BLOB
    2. Parameter: Der Pfad (xpath)
    3. Parameter: Der Datentyp der zurückkommt. i=Zahl und "na"=kein array

    lg Andreas

  12. #12
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Herzlichen Dank!
    Dieter

Similar Threads

  1. Antworten: 2
    Letzter Beitrag: 31-12-15, 11:52
  2. Datei aus IFS verarbeiten
    By Joe in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 06-08-15, 11:45
  3. Neu! Native EXCEL, PDF, HTML verarbeiten
    By andigoering in forum Archiv NEWSblibs
    Antworten: 0
    Letzter Beitrag: 08-11-02, 16:27
  4. Datei mit Hex-Werten in RPG verarbeiten
    By DiBagger in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-09-02, 13:41
  5. xls/ascii-Dateien verarbeiten
    By Neurohr in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 13-07-02, 00:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •