Foxtable(狐表)用户栏目专家坐堂 → 多层JOSON中的第二层解析,写入表单怎样写公式?


  共有2132人关注过本帖树形打印复制链接

主题:多层JOSON中的第二层解析,写入表单怎样写公式?

帅哥哟,离线,有人找我吗?
riancel
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:829 威望:0 精华:0 注册:2008/10/15 19:28:00
多层JOSON中的第二层解析,写入表单怎样写公式?  发帖心情 Post By:2019/4/17 11:13:00 [只看该作者]

我做了一个piao据打印软件,基本上已完工了,已经可以验证录入账.....号的录入性错误,但是出纳还想要户  .*名和卡**号校验的功能。
我们已经买了聚合数据的银行...卡.....二元素检测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 的结果写入 联网校验 户 ...名列呢?
看清楚哦,是指的第二层 的解析,第一层是没有问题的
麻烦大家帮帮忙
图片见下图

图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2019/4/17 11:51:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
riancel
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:829 威望:0 精华:0 注册:2008/10/15 19:28:00
银..行..卡校验位计算功能费了0.5天写的哦,共享给大家  发帖心情 Post By:2019/4/17 11:17:00 [只看该作者]

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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2019/4/17 11:30:00 [只看该作者]

参考

 

Dim json = ClipBoard.GetText
Dim jo As JObject = JObject.Parse(json)
msgbox(jo("reason"))
msgbox(jo("result")("bankcard"))


 回到顶部
帅哥哟,离线,有人找我吗?
riancel
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:42 积分:829 威望:0 精华:0 注册:2008/10/15 19:28:00
回复:(riancel)多层JOSON解析,写入表单怎样写公式...  发帖心情 Post By:2019/4/17 11:48:00 [只看该作者]

Tables("收款人名册").Current("联网校验户名") = jo("result/res")

我是指的返回,joson返回结果下的第二层 也就是 result 下面的res  怎样写?? 第一层是能够显示的,就是第二层不知道怎样办???

{

"reason":"成功",

"result":{

"bankcard":"6283174210183040",

"realname":"朱世勇",

"res":1

},

"error_code":0

}
[此贴子已经被作者于2019/4/17 11:48:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2019/4/17 11:56:00 [只看该作者]

参考啊

 

Dim json = ClipBoard.GetText
Dim jo As JObject = JObject.Parse(json)
msgbox(jo("reason"))
msgbox(jo("result")("bankcard"))


 回到顶部