以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多层JOSON中的第二层解析,写入表单怎样写公式? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133619) |
-- 作者:riancel -- 发布时间:2019/4/17 11:13:00 -- 多层JOSON中的第二层解析,写入表单怎样写公式? 我做了一个票据打印软件,基本上已完工了,已经可以验证录入账.....号的录入性错误,但是出纳还想要户 .*名和卡**号校验的功能。 我们已经买了聚合数据的银行...卡.....二元素检测API功能,我做了httpclient 已经可以发送信息到聚合数据 {
"reason":"成功",
"result":{
"bankcard":"6283174210183040",
"realname":"朱世勇",
"res":1
},
"error_code":0
} 这是JOSON解析结果 With Tables("收款人名册")
Dim CurRow As Row = Tables("收款人名册").Current
Dim hc As New HttpClient("http://v.juhe.cn/verifybankcard/query?key=52b77a3bc6*************2492&bankcard=" & currow("账号") & "&realname=" & currow("收款人") )
Dim jo As JObject = JObject.Parse(hc.GetData)
Tables("收款人名册").Current("联网校验户名") = jo("result/res").ToString
End With 我在窗口中写的解析 但是两层以上的结果解析怎样写手册当中没有写清楚,老是不正确不能将JOSON中的 result 下的 res 的结果写入 联网校验 户 ...名列呢? 看清楚哦,是指的第二层 的解析,第一层是没有问题的 麻烦大家帮帮忙 图片见下图 [此贴子已经被作者于2019/4/17 11:51:03编辑过]
|
-- 作者:riancel -- 发布时间:2019/4/17 11:17:00 -- 银..行..卡校验位计算功能费了0.5天写的哦,共享给大家 If e.DataCol.Name = "账....号" Then \'如果更改的是身份证号码列 Dim skr As Integer = len(e.DataRow("收款人")) e.DataRow("账号检索") = e.DataRow("收款人") & "【" & e.DataRow("开户行") & "】" & e.DataRow("账号") & " " & e.DataRow("备注") If e.DataRow.IsNull("账号") Then \'身份证号码是否为空 e.DataRow("录入校验") = Nothing \'如果为空,则清除出生日期 Else If skr < 50 Then Dim zh As String = e.DataRow("账号") e.DataRow("BIN") = LEFT(zh,6) \'e.DataRow("单数") = \'计算3-15位的单数位之各 Dim kd As Integer = val(left(RIGHT(zh,3),1))+val(left(RIGHT(zh,5),1))+val(left(RIGHT(zh,7),1))+val(left(RIGHT(zh,9),1))+val(left(RIGHT(zh,11),1))+val(left(RIGHT(zh,13),1))+val(left(RIGHT(zh,15),1)) \'计算2-16位双数位的MOD,和INT之和 Dim km2 As Integer = val(LEFT(RIGHT(zh,2),1)*2) Mod 10 Dim kt2 As Integer = math.floor(LEFT(RIGHT(zh,2),1)*2/10) Dim km4 As Integer = val(LEFT(RIGHT(zh,4),1)*2) Mod 10 Dim kt4 As Integer = math.floor(LEFT(RIGHT(zh,4),1)*2/10) Dim km6 As Integer = val(LEFT(RIGHT(zh,6),1)*2) Mod 10 Dim kt6 As Integer = math.floor(LEFT(RIGHT(zh,6),1)*2/10) Dim km8 As Integer = val(LEFT(RIGHT(zh,8),1)*2) Mod 10 Dim kt8 As Integer = math.floor(LEFT(RIGHT(zh,8),1)*2/10) Dim km10 As Integer = val(LEFT(RIGHT(zh,10),1)*2) Mod 10 Dim kt10 As Integer = math.floor(LEFT(RIGHT(zh,10),1)*2/10) Dim km12 As Integer = val(LEFT(RIGHT(zh,12),1)*2) Mod 10 Dim kt12 As Integer = math.floor(LEFT(RIGHT(zh,12),1)*2/10) Dim km14 As Integer = val(LEFT(RIGHT(zh,14),1)*2) Mod 10 Dim kt14 As Integer = math.floor(LEFT(RIGHT(zh,14),1)*2/10) Dim km16 As Integer = val(LEFT(RIGHT(zh,16),1)*2) Mod 10 Dim kt16 As Integer = math.floor(LEFT(RIGHT(zh,16),1)*2/10) Dim ks As Integer = km2 + kt2 +km4 + kt4 +km6 + kt6 +km8 + kt8 +km10 + kt10 +km12 + kt12 +km14 + kt14 +km16 + kt16 \'================================================判断17-19位数 Dim ka As Integer Dim km18 As Integer Dim kc As Integer Dim kt18 As Integer Dim cd As Integer = len(e.DataRow("账号")) If cd >=17 Then ka = val(LEFT(RIGHT(zh,17),1)) Else ka =0 End If If cd >=18 Then km18 = val(LEFT(RIGHT(zh,18),1)*2) Mod 10 kt18 = math.floor(LEFT(RIGHT(zh,18),1)*2/10) Else km18 = 0 kt18 = 0 End If If cd >=19 Then kc = val(LEFT(RIGHT(zh,19),1)) Else kc = 0 End If Dim kk As Integer = ka + km18 + kt18 + kc \'根据单数位,双数位,及17-19位情况合与校验位 Dim js As Integer = (kd + ks + kk)*9 Mod 10 Dim jy As Integer = val(right (zh,1)) If js = jy Then e.DataRow("录入校验") = "正确" e.DataRow("校验位") = js Else If js <> jy And skr < 5 Then e.DataRow("录入校验") = "错误" e.DataRow("校验位") = js Else e.DataRow("录入校验") = "不详" e.DataRow("校验位") = js End If End If End If
[此贴子已经被作者于2019/4/17 11:22:02编辑过]
|
-- 作者:有点色 -- 发布时间:2019/4/17 11:30:00 -- 参考
Dim json = ClipBoard.GetText |
-- 作者:riancel -- 发布时间:2019/4/17 11:48:00 -- 回复:(riancel)多层JOSON解析,写入表单怎样写公式... Tables("收款人名册").Current("联网校验户名") = jo("result/res") 我是指的返回,joson返回结果下的第二层 也就是 result 下面的res 怎样写?? 第一层是能够显示的,就是第二层不知道怎样办??? {
"reason":"成功",
"result":{
"bankcard":"6283174210183040",
"realname":"朱世勇",
"res":1
},
"error_code":0 } [此贴子已经被作者于2019/4/17 11:48:50编辑过]
|
-- 作者:有点色 -- 发布时间:2019/4/17 11:56:00 -- 参考啊
Dim json = ClipBoard.GetText |