当前位置: 代码迷 >> PB >> 怎么截取到自己想要的数据
  详细解决方案

怎么截取到自己想要的数据

热度:163   发布时间:2016-04-29 05:28:47.0
如何截取到自己想要的数据
目前在做一个接口,是HTTP接口的,对方返回的数据格式如下

{"PAGE":[

{"GUARDIAN_SFCODE":"","IN_STIME":"2014-08-05 08:00:00","PRODUCT_ID":"c92e030157424ebda3ca1198a8de23d5","PRODUCT_NAME":"耳鼻喉门诊特需挂号","GUARDIAN_MOBILE":"","AGENT_NAME":"","RECEIVE_NAME":"肖磊","RECEIVE_CARD_NUM":"","IN_ETIME":"2014-08-0512:00:00","RECEIVE_MOBILE":"13768687856","PI_NUM":"10","RECEIVE_AGE":"20","ORDER_ID":"zyy1","RECEIVE_ADDR":"","PRODUCT_PRICE":"200.00","ORDER_CTIME":"2014-08-04 15:03:14","RECEIVE_SFCODE":"323456199411114545","SHOP_NAME":"XX第一附属医院","PCATE_DESC":"门诊楼","RECEIVE_GENDER":"1","GUARDIAN_NAME":"","PCATE_ID":"2bfb05cfc12b421391c305788eaa7b77","PCATE_NAME":"耳鼻喉科门诊"},

{"GUARDIAN_SFCODE":"","IN_STIME":"2014-08-05 15:00:00","PRODUCT_ID":"819b014db25241f6ad4f9e1dcf7a83b7","PRODUCT_NAME":"儿科门诊特需挂号","GUARDIAN_MOBILE":"","AGENT_NAME":"","RECEIVE_NAME":"孙恺","RECEIVE_CARD_NUM":"","IN_ETIME":"2014-08-0518:00:00","RECEIVE_MOBILE":"15823452345","PI_NUM":"10","RECEIVE_AGE":"25","ORDER_ID":"zyy2","RECEIVE_ADDR":"","PRODUCT_PRICE":"200.00","ORDER_CTIME":"2014-08-04 15:07:40","RECEIVE_SFCODE":"623456199011114367","SHOP_NAME":"XX第一附属医院","PCATE_DESC":"门诊楼","RECEIVE_GENDER":"1","GUARDIAN_NAME":"","PCATE_ID":"4767e81c3e554b6f9d1fb2313cc6dd6a","PCATE_NAME":"儿科门诊"}

]}

每次返回的GUARDIAN_SFCODE个数不一定一样,我要把每个GUARDIAN_SFCODE里面的RECEIVE_NAME、RECEIVE_SFCODE、ORDER_ID、RECEIVE_AGE、PI_NUM、PCATE_ID、RECEIVE_MOBILE、PRODUCT_ID等值都取出来,该怎么做呢?
------解决方案--------------------
给你贴个我写的函数gf_split_parm_format,用途拆分字符串

global type gf_split_parm_format from function_object
end type

forward prototypes
global function integer gf_split_parm_format (string as_parm, ref string as_data[], string as_format)
end prototypes

global function integer gf_split_parm_format (string as_parm, ref string as_data[], string as_format);//拆分返回值
long ll_pos, ll_item

if isnull(as_parm) then
as_parm = ''
end if

if len(as_parm) <= 0 then
return 0
end if

if isnull(as_format) then
as_format = ''
end if
if len(as_format) <= 0 then
return 0
end if

ll_item = 0
ll_pos = pos(as_parm, as_format)
do while ll_pos > 0
ll_item ++
as_data[ll_item] = left(as_parm, ll_pos - 1)
as_parm = mid(as_parm, ll_pos + len(as_format))
ll_pos = pos(as_parm, as_format)
loop
ll_item ++
as_data[ll_item] = as_parm
return ll_item
end function

把这个导入到你的pbl里,然后这么写

string ls_data, ls_item[], ls_detail[]

ls_data  = '{"GUARDIAN_SFCODE":"","IN_STIME":"2014-08-'  //你的字符串放在这里

gf_split_parm_format(ls_data, ls_item, "GUARDIAN_SFCODE")

ls_item这个数组里就是你要的数据,然后再拆分出明细的数据
  相关解决方案