PB中json字符串中取对应的key的value值

4 篇文章 0 订阅
2 篇文章 0 订阅
简介:
PB中json‘字符串转换不像jsp可以用parse直接转换的函数,目前我是没找到,现在我们手动去做切割转换
代码示例:
//定义参数
String ls_arr[]  //把返回的json串截取后放置此数组
String ls_str //按逗号截取的单个值,方便遍历的时候取值
String ls_get_value[] //返回的json串里面的key的value的值
String ls_check_filed[] = {"idNo", "ecQrCode", "ecToken","userName","outBizNo","ecIndexNo","insuOrg"}//要取json字符串里面的key
String outinfo='{"code":0,"data":{"bizNo":"20200707172823063632","ecQrCode":"4243681263916863590400000000","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","extra":{"ecIndexNo":"5ABCD88B1C4C3605AC8F6C398D919ACC","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","idNo":"430203********0026","idType":"01","insuOrg":"430199","userName":"孙某某"},"gainWay":"MOBILE","idNo":"430203********0026","insuOrg":null,"outBizNo":"2020070717282043990023003","phone":"","userName":"孙某某"},"extra":{"ecIndexNo":"5ABCD88B1C4C3605AC8F6C398D919ACC","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","idNo":"430203195909240026","idType":"01","insuOrg":"430199","userName":"孙鹏"},"message":"处理成功","orgId":"43990023003"}'//PB中的json字符串
//开始切割outinfo
f_split(outinfo,",",ls_arr) 
for ll_ii=1 to upperbound(ls_arr)
    ls_str = ls_arr[ll_ii]	
	 for li_count =1 to upperbound(ls_check_filed)
	     ll_pos = pos(ls_str,ls_check_filed[li_count],1)
		  if ll_pos >0 then 
			 if  pos(ls_str,"{",1) >0 then
				  ls_get_temp = uf_conver_char2list(ls_str,"{")
				  ls_str = ls_get_temp[2]
			 end if 
			 if pos(ls_str,"}",1) >0 then
				  ls_get_temp = uf_conver_char2list(ls_str,"}")
				  ls_str = ls_get_temp[1]
			 end if
			 ls_get_temp = uf_conver_char2list(ls_str,":")
			 ls_get_value[li_count] = mid(ls_get_temp[2],2,len(ls_get_temp[2])-2)
		  end if
    next
next 
//返回的格式是ls_get_value数组
//取值的方式是idNo= ls_get_value[1]、is_qrcode = ls_get_value[2]等等
return ls_get_value
此函数uf_conver_char2list是通用切割函数,可以新建一个function使用,方便上面切割

在这里插入图片描述

//-----------------------------------------------------------------------------------
// f_conver_char2list("|","abc|123") 
// return str_list[1] = abc
// return str_list[2] = 123
// 字符串 按 特定字符 返回 字符列表
//-----------------------------------------------------------------------------------
string  str_list[]
string  str_temp
integer i=1
long    ll_pos
ll_pos = pos(str_input,str_bj,1)
do
if ll_pos = 0 then 
str_list[i] = str_input
else
str_list[i] = left(str_input,ll_pos - 1)
i++
  str_input = mid(str_input,ll_pos + 1)
ll_pos = pos(str_input,str_bj,1)
if ll_pos = 0 then str_list[i] = str_input
end if
loop while ll_pos <> 0
return str_list
这样我们就可以通过PB的json字符串转换为数组然后取出key的值
//返回的值
String outinfo='{"code":0,"data":{"bizNo":"20200707172823063632","ecQrCode":"4243681263916863590400000000","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","extra":{"ecIndexNo":"5ABCD88B1C4C3605AC8F6C398D919ACC","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","idNo":"430203********0026","idType":"01","insuOrg":"430199","userName":"孙某某"},"gainWay":"MOBILE","idNo":"430203********0026","insuOrg":null,"outBizNo":"2020070717282043990023003","phone":"","userName":"孙某某"},"extra":{"ecIndexNo":"5ABCD88B1C4C3605AC8F6C398D919ACC","ecToken":"4300001eckatckg4kqfabc160a00005170fb08","idNo":"430203195909240026","idType":"01","insuOrg":"430199","userName":"孙鹏"},"message":"处理成功","orgId":"43990023003"}'
//目标的值
String ls_check_filed[] = {"idNo", "ecQrCode", "ecToken","userName","outBizNo","ecIndexNo","insuOrg"}//要取json字符串里面的key
String idNo=ls_check_filed[1]
Stirng ecQrCode =ls_check_filed[2]
Stirng ecToken=ls_check_filed[3]
Stirng userName=ls_check_filed[4]
Stirng outBizNo=ls_check_filed[5]
Stirng ecIndexNo=ls_check_filed[5]
Stirng insuOrg =ls_check_filed[7]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

情谊梦幻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值