Example 3 (using HTTPClient & JSONParser)
If the JSON string returned from the RESTFul Web Service is not
at the required format, for example, the top-level are not arrays, or
item contains null values, you may consider using the JSONParser and
HTTPClient objects to import the JSON data to the DataWindow.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
string ls_json string ls_url string ls_error long ll_row,ll_return long ll_root,ll_object,ll_item long ll_loop1,ll_loop2 long ll_id,ll_data string ls_data,ls_key jsonparser lnv_jsonparser httpclient lnv_httpclient lnv_httpclient = create httpclient lnv_jsonparser = create jsonparser ls_url = "https://json.appeon.test/employees" //Get the JSON string via httpclient ll_return = lnv_httpclient.sendrequest("Get",ls_url) if ll_return <> 1 then messagebox("Failed","SendRequest Failed:"+lnv_httpclient.getresponsestatustext( )) return end if lnv_httpclient.getresponsebody( ls_json) /* JSON string returned from the URL: { "1106":{"First_name":"Vincent","Last_name":"Phillipino","Sex":"Male","Age":63}, "1107":{"First_name":"Natalie","Last_name":"Mariano","Sex":"Female","Age":16}, "1108":{"First_name":"Li","Last_name":"Mary","Sex":"Female","Age":36}, "1109":{"First_name":"Vic","Last_name":null,"Sex":"male","Age":20} }*/ //Loads the JSON data via jsonpaser ls_error = lnv_jsonparser.loadstring(ls_json) if len(trim(ls_error)) > 0 then Messagebox("Failed","Load json failed:"+ls_error) return end if //Obtains the handle of root item ll_root = lnv_jsonparser.getrootitem( ) //Obtains the each row in a loop for ll_loop1 = 1 to lnv_jsonparser.getchildcount(ll_root) ll_row = dw_1.insertrow(0) //Obtains ID ll_id = long(lnv_jsonparser.getchildkey(ll_root, ll_loop1)) dw_1.setitem( ll_row,"id", ll_id) //Obtains the other column data in a loop ll_object = lnv_jsonparser.getchilditem( ll_root, ll_loop1) for ll_loop2 = 1 to lnv_jsonparser.getchildcount( ll_object) ll_item = lnv_jsonparser.getchilditem( ll_object, ll_loop2) ls_key = lnv_jsonparser.getchildkey( ll_object, ll_loop2) //Obtains the data type of each item choose case lnv_jsonparser.getitemtype( ll_item) case jsonarrayitem!,jsonobjectitem!,jsonnullitem! //ignores array, object and null item case jsonstringitem! ls_data = lnv_jsonparser.getitemstring(ll_object,ls_key) dw_1.setitem(ll_row,ls_key,ls_data) case jsonnumberitem! ll_data = lnv_jsonparser.getitemnumber(ll_object,ls_key) dw_1.setitem(ll_row,ls_key,ll_data) case jsonbooleanitem! //handles boolean as string ls_data = string(lnv_jsonparser.getitemboolean( ll_object,ls_key)) dw_1.setitem(ll_row,ls_key,ls_data) end choose next //Finish processing one row next//Start processing next row destroy lnv_jsonparser |
Document get from Powerbuilder help
Thank you for watching.
Subscribe
Login
0 Comments
Oldest