[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.618

    Rest Anfrage und Json return

    Moin *all
    für eine neue Schnittstelle muß ich eine REST anfrage machen und ich bekomme Daten im Json Format zurück.
    Da es bisher kein Beispiel (vom Schnittstellenanbieter) gibt, wie gehen wir vor?

    1. wir bilden je AnfrageTyp den String mit der URL, den wir später mit HttpGetClob 'weggeben'
    PHP-Code:
    eval URL 'HTTP://'  + %trim(Servername) + ':80' '/XX/GetNotiz/{notizId}' 
    Frage: Muß ich die notizId in der geschweiften Klammer weggeben oder ist das eine Syntax um eine Variable darzustellen?

    Dann bekomme ich ein Json zurück
    PHP-Code:
    Definiere ich da eine DS die dann gefüllt ist?
     
    Passiert da eine Typ Größenprüfung
     Was geschied
    wenn ich eine Variable 50A Definiere aber 55 Byte kommen?
     
    Abbruch oder abgeschnitten?
     
    Muß ich eine DIM oder eine OCCUR Tabelle definierenwenn der Aufruf mehrere 'Datensätze'
     
    zurück liefertAuch hier... was geschiedwenn die Tabelle nicht groß genug ist
    Oder definiere ich nur einen großen String, den ich später selber auslese

    Es kommen teilweise 150 Felder zurück, von dehnen ich 2 der 3 verwenden muß

    Danke
    Robi
    Interessante Umfrage zur Nutzung der AS/400

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    17.798
    Wie würde Birgitta nun antworten?
    Nimm doch einfach mal SQL:

    https://www.ibm.com/support/knowledg.../rbafyjson.htm

    Funktioniert im Prinzip nicht anders als XML:

    https://www.ibm.com/support/knowledg...yjsontable.htm
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.618
    ???
    Das will ich doch ...
    http://newsolutions.de/forum-systemi...https-aufrufen

    daher doch die Fragen!
    irgendwo anders wurde ein Json in eine DS eingelesen
    Interessante Umfrage zur Nutzung der AS/400

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    17.798
    Den ermittelten CLOB übergibst du dann an den JSON_TABLE mit der Definition des Pfades und der Knoten. Die Typisierung kommt durch die Spaltendefinition, so dass Werte gecasted werden.
    Du bekommst natürlich nur eine relationale Sicht der Daten, aber du kannst ja die Ebene mit Mehrfachvorkommen auswählen und per "../"-Notation auf übergeordnete Pfade zugreifen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    1.618
    Gibt es irgendwo ein Beispiel ohne FREE
    Der SEU nervt wenn ich Free verwende.
    Und beim Umsetzen Free / nicht free mach ich auch immer Fehler bei den datenstrukturen

    Da wäre was zum abgucken hilfreich.
    Interessante Umfrage zur Nutzung der AS/400

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    1.618
    Fragen zu diesem Beispiel, das ich im netz gefunden und abgeschrieben habe
    (es funktioniert)
    PHP-Code:
    **free
    dcl
    -s json sqltype(clob:32767);
    dcl-s wid varchar(10);
    dcl-s wnom varchar(10);
    dcl-s wtel char(12);
    JSON_data='{                                                    +
                 "id" : 901,                                        +
                 "name" : { "first":"John", "last":"Doe" },         +
                 "phones" : [{"type":"home", "number":"555-3762"},  +
                             {"type":"work", "number":"555-7252"}   +
                            ]                                       +
               }'
    ;

    json_len = %len(%trimr(json_data));
    EXEC SQL
      select id
    lasttel into :wid, :wnom, :wtel
        from JSON_TABLE
    (:json'$'
         
    COLUMNSid VARCHAR(10PATH '$.id',
                  
    first VARCHAR(10PATH '$.name.first',
                  
    last VARCHAR(10PATH '$.name.last',
                  
    tel CHAR(12PATH 'lax $.phones[0].number')
        ) AS 
    X;

        
    dsply (wid +'-' wnom);

    *
    INLR=*ON
    Fragen:
    JSON ist als Clob definiert
    JSON_Len ist gar nicht definiert --> ist also eine reserviertes Wort?
    JSON_Data ist definiert und enthällt die Daten, der SELECT geht aber auf JSON_TABLE(:JSON, --> Also ist DATA auch ein fester Wert, der zu der eigendlichen Variable gehört?

    Wenn ich mit HTTPGETCLOB die Daten in das CLOB MyClob Feld lese, was ist dan mit einem MyClob_DATA ? Wie sieht dann der Befehl aus?
    Interessante Umfrage zur Nutzung der AS/400

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.406
    Hi Robi,

    Im Debugger oder auch im Spool müsstest du sehen, dass der Precompiler aus der definition JSON eine DS macht mit 2 Unterfelder (JSON_LEN + JSON_DATA).
    Das gleiche hast du auch wenn du Strings Pointer in RPG definierst. In Data stehen die Werte und in LEN wie lang der "Pointer" ist.

    Du könntest auch mit SQL eine Globale CLOB Variable erstellen die du mit:
    exec sql Set :myClob ...
    befüllst und im SELECT auch direkt verwendest.

    lg Andreas

  8. #8
    Registriert seit
    Jun 2001
    Beiträge
    1.618
    Ja, danke
    CLOB ist das Stichwort, JSON ist nur ein x-beliebiger Name (da hab ich wohl den Wald vor lauter Bäumen nicht gesehen)

    Trotzdem krieg ich irgendwie die Kurve nicht

    1. Wenn ich den Clob eingelesen habe und dieser mehrere 'Sätze' enthällt
    - kann ich den mit prepare und fetch 'durch' lesen?
    - Wenn er (beim Einlesen) 'überläuft', habe ich dann einen Abbruch im httpgetclob oder den letzten Satz nur zur Hälfte? Letzteres wäre ja kein Problem
    - Wie setze ich JSON_len, wenn im Clob mehrere 'Sätze' sind die unterschiedlich lang sind, die 'Satzlänge'
    weis ich doch erst, wenn ich die Daten gelesen habe.

    ggf denke ich z.zt. etwas kompliziert.
    Clob kenn ich nur aus einer Funktion mit der wir PDF in der DB Speichern und vorholen, JSON und REST sind Neuland.

    Danke
    Interessante Umfrage zur Nutzung der AS/400

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    17.798
    Der CLOB muss in der Größe der max. Datenlänge definiert sein (z.B. 10M, 1G).
    Dieser wird dann durch den Request komplett gefüllt.
    Ist der CLOB zu klein, gibts (wie immer) was auf die Finger.
    Nun gibst du diese Variable ja an die Table-Function und mit Fetch liest du nun alle Zeilen nach und nach aus, so wie mit normalen Tabellen eben auch.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jun 2001
    Beiträge
    1.618
    OK, Danke
    was auf die Finger.
    bedeutet wohl Abbruch. Also groß genung definieren!

    lt. Beispiel bekomme ich ggf soetwas zurück
    "DatumBezahlung":null

    Interpretiert das JSOB_TABLE lesen dieses null und ich kan mit den null Indikatoren beim einlesen arbeiten
    oder muß ich alle Werte die null werden können Alpha definieren und selber basteln?

    und lt. Text Dokumentation kommt etwas wie
    "Betrag":10.00 also Punkt statt Komma.

    'Kann' JSON_Table das, weil es in der Nicht AS/400 Welt 'normal' ist oder was muß ich machen.
    Interessante Umfrage zur Nutzung der AS/400

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    17.798
    Punkt statt Komma must du für die aktuelle Umgebung das Dezimalformat setzen (leider Compile-Time per "Set Option ...".
    In wie weit nun "null" als NULL-Value oder als Text "null" interpretiert wird kann ich nicht sagen.
    Normalerweise gibt es da einen Leerstring.
    Ich denke also, dass du diese Felder dann als Zeichenfelder definieren musst und per %dec()-Inlinefunktion dann umwandeln musst. Das mache ich bei XML allerdings auch schon so (Zahlen, Datum).
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: http://www.fuerchau.de/software/upload400.htm
    BI? Da war doch noch was: http://www.ftsolutions.de

Ähnliche Themen

  1. Parameternamen bei Webservice REST im JSON-Format
    Von Flappes im Forum NEWSboard programmierung
    Antworten: 4
    Letzter Beitrag: 01-06-17, 09:01
  2. Systemanfrage 2 (Vorherige Anfrage beenden) im RPG abfangen ?
    Von harkne im Forum NEWSboard programmierung
    Antworten: 17
    Letzter Beitrag: 30-09-16, 11:16
  3. JSON in RPG verarbeiten
    Von dschroeder im Forum NEWSboard programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-16, 15:23
  4. XML-Into Return Code
    Von DEVJO im Forum NEWSboard programmierung
    Antworten: 1
    Letzter Beitrag: 29-10-15, 12:30
  5. Return aus SQL Procedure
    Von dabeda im Forum NEWSboard programmierung
    Antworten: 14
    Letzter Beitrag: 05-03-15, 13:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •