ctl-opt main(main); /copy libyajl/qrpglesrc,yajl_h //------------------------------------------------------------------- // module-level data //------------------------------------------------------------------- dcl-s i int(10); dcl-s j int(10); dcl-s k int(10); dcl-s errmsg varchar(500); dcl-s val_p pointer; dcl-s ary_p pointer; dcl-s key varchar(50); dcl-s doc_p pointer; dcl-ds doc qualified dim(960); id uns(5); title varchar(50); userId uns(5); content varchar(500); likes uns(5); hits uns(5); categoryId uns(5); imageUrl varchar(80); end-ds; //------------------------------------------------------------------- // main procedure //------------------------------------------------------------------- dcl-proc main; //------------------------------------------------------------------- // parse stream file and load array //------------------------------------------------------------------- doc_p = yajl_stmf_load_tree('/rdweb/json/test_02.json' : errmsg); clear doc; for k = 1 to 1000; i = 0; dow yajl_array_loop(doc_p:i:ary_p); j = 0; dow yajl_object_loop(ary_p:j:key:val_p); exsr load_doc; enddo; enddo; endfor; yajl_tree_free(doc_p); *inlr = *on; //------------------------------------------------------------------- // load YAJL data into the array //------------------------------------------------------------------- begsr load_doc; select; when key = 'id'; doc(i).id = yajl_get_number(val_p); when key = 'title'; doc(i).title = yajl_get_string(val_p); when key = 'userId'; doc(i).userId = yajl_get_number(val_p); when key = 'content'; doc(i).content = yajl_get_string(val_p); when key = 'likes'; doc(i).likes = yajl_get_number(val_p); when key = 'hits'; doc(i).hits = yajl_get_number(val_p); when key = 'categoryId'; doc(i).categoryId = yajl_get_number(val_p); when key = 'imageUrl'; doc(i).imageUrl = yajl_get_string(val_p); endsl; endsr; end-proc;