[파워빌더] json 에서 데이터 추출하기
OleObject lole_Send
OleObject lole_SrvHTTP
OleObject lole_ScriptControl
String ls_status
String ls_response
String ls_value
lole_Send = CREATE OleObject
lole_SrvHTTP = CREATE OleObject
lole_Send.connectToNewObject("Msxml2.DOMDocument.6.0")
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0")
lole_SrvHTTP.Open("GET", "http://date.jsontest.com", FALSE)
lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.Send(lole_Send)
ls_status = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
MessageBox("REST HTTP response", ls_status) // 200 is OK!
MessageBox("JSON response", ls_response)
lole_ScriptControl = CREATE OleObject
lole_ScriptControl.ConnectToNewObject( "MSScriptControl.ScriptControl" )
lole_ScriptControl.Language = "JScript"
lole_ScriptControl.AddCode("function getValue(s,key) {eval(~"jsonobj=~" + s); return eval(~"jsonobj.~" + key) ; }")
TRY
// remove (replace with "") all the carriage return to clean up the JSON string
int position, i
FOR i = 1 to len(ls_response)
position = pos(ls_response, "~n")
IF position > 0 THEN
ls_response= Replace(ls_response, position, 1, "")
END IF
NEXT
MessageBox("JSON response cleanup", ls_response)
// typical response
// { "time": "04:21:52 PM", "milliseconds_since_epoch": 1436113312190, "date": "07-05-2015" }
ls_value = lole_ScriptControl.Eval ("getValue(' " + ls_response + " ', 'date');")
MessageBox("date value", ls_value)
CATCH ( Throwable e )
MessageBox("Err", e.GetMessage())
END TRY
OleObject lole_SrvHTTP
OleObject lole_ScriptControl
String ls_status
String ls_response
String ls_value
lole_Send = CREATE OleObject
lole_SrvHTTP = CREATE OleObject
lole_Send.connectToNewObject("Msxml2.DOMDocument.6.0")
lole_SrvHTTP.connectToNewObject("MSXML2.ServerXMLHTTP.6.0")
lole_SrvHTTP.Open("GET", "http://date.jsontest.com", FALSE)
lole_SrvHTTP.SetRequestHeader( "Content-Type", "application/json")
lole_SrvHTTP.Send(lole_Send)
ls_status = string(lole_SrvHTTP.Status)
ls_response = string(lole_SrvHTTP.ResponseText)
MessageBox("REST HTTP response", ls_status) // 200 is OK!
MessageBox("JSON response", ls_response)
lole_ScriptControl = CREATE OleObject
lole_ScriptControl.ConnectToNewObject( "MSScriptControl.ScriptControl" )
lole_ScriptControl.Language = "JScript"
lole_ScriptControl.AddCode("function getValue(s,key) {eval(~"jsonobj=~" + s); return eval(~"jsonobj.~" + key) ; }")
TRY
// remove (replace with "") all the carriage return to clean up the JSON string
int position, i
FOR i = 1 to len(ls_response)
position = pos(ls_response, "~n")
IF position > 0 THEN
ls_response= Replace(ls_response, position, 1, "")
END IF
NEXT
MessageBox("JSON response cleanup", ls_response)
// typical response
// { "time": "04:21:52 PM", "milliseconds_since_epoch": 1436113312190, "date": "07-05-2015" }
ls_value = lole_ScriptControl.Eval ("getValue(' " + ls_response + " ', 'date');")
MessageBox("date value", ls_value)
CATCH ( Throwable e )
MessageBox("Err", e.GetMessage())
END TRY