Zitat Zitat von Rainer Ross Beitrag anzeigen
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') , 20) as Name,     
 
json_val(json_info,'kunde.adresse.plz','i') as PLZ,                
 
substr(json_val(json_info,'kunde.adresse.ort','s') , 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

Hallo!

Danke für die vielen Antworten und Hilfe.
Im Prinzip funktioniert alles wie beschriebeh in den Tech Tips und auch wie Rainer Ross beschrieben hat.
Ich hatte mich nur am Anfang mit den CCSID's verzettelt, es funkt tatsächlich wirklich alles selbst mit CCSID 1141.

@Rainer Ross
MIr mag eine variable Abfrage aller Elemente und aller Subfelder eines Arrays einfach nicht gelingen. Sprich lt. Deinem Beispiel eine Variable abfrage all Deiner Partner Kunden im Array (wenn Du mehrere hättest)....