Hallo Rischer,
ich mache relativ viel mit IBM i, Webanwendungen, AJAX und JSON.
Die Maschine hat 7.2 mit dem neuesten PTF-Stand und CCSID 1141 im Systemwert QCCSID.
Mit folgenden Schritten läuft das Beispiel auf meiner Maschine:
1. JSON-SQL-Funktionen einrichten
qsh
/QIBM/ProdData/OS/SQLLIB/bin/db2nosql -setup enable
2. Datei erstellen
create or replace table tsto.wrkjson
(jsid int generated always as identity (start with 1 increment by 1),
json_info blob(3M) not null,
primary key(jsid));
Label on Column wrkjson (jsid is 'Id');
Label on Column wrkjson (json_info is 'JSON-Info');
3. JSON-Daten einfügen
INSERT INTO tsto.wrkjson (JSON_INFO)
VALUES ( SYSTOOLS.JSON2BSON('{"detail":"hilfe"}'))
INSERT INTO tsto.wrkjson (JSON_INFO)
VALUES ( SYSTOOLS.JSON2BSON('{"detail":"hilfe2"}'))
4. JSON-Daten auslesen
select jsid,json_val(json_info,'detail','s') as info
from tsto.wrkjson
Anfang auf Zeile . . . . . .
....+....1....+....2....+....3....+....4....
Id INFO
1 hilfe
2 hilfe2
******** Datenende ********
Jetzt mit einem komplexeren Beispiel
PHP-Code:
INSERT INTO tsto.wrkjson (JSON_INFO)
VALUES ( SYSTOOLS.JSON2BSON('{
"kunde": [
{
"id" :123456,
"name":"Testname",
"adresse": {
"plz":86916,
"ort":"Kaufering"
}
}]
}'))
select jsid,
json_val(json_info,'kunde.id','i') as Id,
substr(json_val(json_info,'kunde.name','s') , 1 , 20) as Name,
json_val(json_info,'kunde.adresse.plz','i') as PLZ,
substr(json_val(json_info,'kunde.adresse.ort','s') , 1 , 20) as Ort
from tsto.wrkjson
....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
Id ID NAME PLZ ORT
1 123.456 Testname 86.916 Kaufering
******** Datenende ********
Herzliche Grüße
Rainer
Bookmarks