Hallo zusammen,

bisher habe ich rein auf der iSeries programmiert (Cobol/RPG) nun müssen aber bei einem Kunden immer mehr Daten mit einem Internetshop ausgetauscht werden, daher ist nun SQL, JSON und REST (usw.) nötig. Bisher hatte ich dazu nur eine Grundschulung.

Bei einem aktuellen Problem nimmt der Shop leider den JSON String nicht an - es müssen zusätzliche Backslash Zeichen vorhanden sein. Zusätzlich muss Alles unter "data" auch noch in einem String stehen, also mit " am Anfang und Ende. Hier ein Beispiel:

{
"type":"uebertragung",
"data":
"[
{
\"FELD1 \ ": \ " 100 \ ",
\ " FELD2 \ ": \ "A \ ",
\ " FELD3\":\"T ext\",
\"FELD4\":\"H100\"
},
{
},
\"FELD1\":\"200\",
\"FELD2\":\"B\",
\"FELD3\":\"Text\",
\"FELD4\":\"H200\"
]"
}

Der Shop braucht die Daten natürlich in einem String - ich habe die Struktur hier nur zwecks Übersichtlichkeit in Zeilen aufgetrennt.


Den Json Datenstring habe ich mit folgenden Befehlen erstellen lassen:

exec sql create or replace view restlib.V_VRSTYP (JSONDOC) as (
select json_object( 'type' value 'uebertragung', key 'data' value
json_arrayagg(
json_object( key 'FELD1' value (PFFELD1),
key 'FELD2' value trim(PFFELD2),
key 'FELD3' value trim(PFFELD3),
key 'FELD4' value trim(PFFELD4)
)
returning clob(2G) ccsid 1208 format json
)
)
from LIB.Datei where PFFELDX = 'xx' and PFFELDY = 'A'
);

exec sql create or replace variable restlib.Request_Doc clob(2G) ccsid 1208 default null;

exec sql values(select * from restlib.V_VRSTYP) into restlib.Request_Doc;

exec sql create or replace variable restlib.PaketS clob(2G) default null;

exec sql set restlib.PaketS = restlib.Request_Doc;


Der Shop möchte die Daten dann als "application/json;charset=utf-8".

Bei der Übertragung wird aktuellSYSTOOLS.HTTPPOSTCLOB mit dem restlib.PaketS verwendet.

Fragen:

Gibt es eine Möglichkeit die Json Daten nachträglich mit den Backlash auszustatten?

Ich hatte auch schon versucht die Json Struktur im RPGSQL Programm "manuell" zu erstellen, also ohne JSON-Funktion sondern mit ILE Befehlen in eine Varchar Variable. Hier ist dann aber das Varchar Feld das Problem - die 32xxx Zeichen reichen nicht in allen Fällen aus für die Daten.

Wenn das hier zu schwierig ist - unserer Firma ist auch für eine bezahlte Beratung offen! Das Thema ist leider zeitlich dringend - wir müssen da einfach eine Lösung haben. Es darf mit uns gerne Kontakt aufgenommen werden.

Vielen Dank und schöne Grüße

Simon