以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]获取企业微信 打卡规则 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=149508) |
||||
-- 作者:zcgmxf -- 发布时间:2020/5/4 23:26:00 -- [求助]获取企业微信 打卡规则 老师,下面的代码可以获得josn 格式的结果,只得到 一部分结果,学艺不精,不会解析,请指教,谢谢! Dim st As New Date(1970,1,1,8,0,0) Dim t As Integer = CInt((Date.Now - st).TotalSeconds()) \'时间戳 Dim ur As String = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckinoption?access_token={0}" Dim hc As New HttpClient(CExp(ur,Functions.Execute("打卡GetQYAccessToken"),0)) Dim jo As New JObject jo("datetime") = t \'设置时间 Dim ja As New Jarray \'定义数组 ja.Add("zhangchunguang") jo("useridlist") = ja hc.Content = jo.Tostring() jo = JObject.Parse(hc.GetData) If jo("errcode") = "0" Then ja = jo("info") DataTables("打卡规则").DataRows.Clear Dim r As Row =Tables("打卡规则").AddNew() For i As Integer = 0 To ja.Count - 1 Dim jo2 As JObject =ja(i) r("userid") = ja(i)("userid").ToString() r("grouptype") = ja(i)("group")("grouptype").ToString() r("groupid") = ja(i)("group")("groupid").ToString() r("groupname") = ja(i)("group")("groupname").ToString() r("sync_holidays") = ja(i)("group")("sync_holidays").ToString() r("need_photo") = ja(i)("group")("need_photo").ToString() r("note_can_use_local_pic") = ja(i)("group")("note_can_use_local_pic").ToString() r("allow_checkin_offworkday") = ja(i)("group")("allow_checkin_offworkday").ToString() r("allow_apply_offworkday") = ja(i)("group")("allow_apply_offworkday").ToString() Next Else MessageBox.Show(jo.ToString) End If [此贴子已经被作者于2020/5/5 0:33:01编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/5/5 9:32:00 -- 完整的json字符串给出来,然后说明什么地方不会解析? |
||||
-- 作者:zcgmxf -- 发布时间:2020/5/6 7:26:00 -- 老师,解析问题解决了,请问一下,这个打卡规则可以像修改通讯录一样通过代码修改?谢谢! |
||||
-- 作者:有点蓝 -- 发布时间:2020/5/6 8:53:00 -- 这个应该去看微信开发文档,有提供相关的接口就可以 |
||||
-- 作者:zcgmxf -- 发布时间:2020/5/10 9:01:00 -- 老师,下面这个 details 的值有多个时如何解析?谢谢!
|
||||
-- 作者:有点酸 -- 发布时间:2020/5/10 9:23:00 -- Dim json As String = Filesys.ReadAllText("c:\\tmp\\123.txt") Dim jo As JObject = JObject.Parse(json) For Each jt As JToken In jo("details") Output.Show(jt("approver")("userid").ToString) Output.Show(jt("sp_status").ToString) Output.Show(jt("speech").ToString) Output.Show(jt("sptime").ToString) Output.Show(jt("media_id").ToString) Next 这里有所有的例子: http://www.foxtable.com/mobilehelp/topics/0140.htm http://www.foxtable.com/mobilehelp/topics/0252.htm
|
||||
-- 作者:zcgmxf -- 发布时间:2020/5/10 10:09:00 -- 谢谢!这个我学了,就是 details 下面有多个相同的值,details 的值如何写?譬如:有几个人会签审批,要获取所有会签结果。 企业微信中获取审批申请详情 中 sp_record
[此贴子已经被作者于2020/5/10 10:34:08编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/5/11 8:42:00 -- 6楼的代码就是 |
||||
-- 作者:zcgmxf -- 发布时间:2020/5/20 0:13:00 -- 老师,在解析审批数据时下面的红色代码执行完毕后总是要出现以下提示,这是什么原因?谢谢! \' 解析申请审批提交数据 ja = jo("info")("apply_data")("contents") For i As Integer = 0 To ja.Count - 1 Dim jo4 As JObject =ja(i) If jo("info")("sp_name").ToString() = "用车" Then r("节点审批方式") = ja(0)("value")("text").ToString() & ja(1)("value")("text").ToString() & ja(2)("value")("text").ToString() & ")" \' & "车型(" & ja(3)("value")("text").ToString() & ")" r("结束时间") = stt.AddSeconds(ja(4)("value")("date")("s_timestamp").ToString()) r("开始时间") = stt.AddSeconds(ja(3)("value")("date")("s_timestamp").ToString()) ElseIf jo("info")("sp_name").ToString() = "外出" Then r("节点审批方式") = ja(0)("value")("text").ToString() & ja(1)("value")("text").ToString() r("结束时间") = stt.AddSeconds(ja(2)("value")("attendance")("date_range")("new_end").ToString()) r("开始时间") = stt.AddSeconds(ja(2)("value")("attendance")("date_range")("new_begin").ToString()) ElseIf jo("info")("sp_name").ToString() = "请假" Then \' 解析请假类型 Dim ssss As String = "{" & vbcrlf & """options""" & ":" & ja(i)("value")("vacation")("selector")("options").ToString() & vbcrlf & "}" Dim jo12 As JObject = JObject.Parse(ssss) Dim ss3 As String For Each jt As JToken In jo12("options") Dim ss2 As String = "{" & vbcrlf & """value""" & ":" & jt("value").ToString() & vbcrlf & "}" Dim lms As new List(of String) Dim jo13 As JObject = JObject.Parse(ss2) For Each jtt As JToken In jo13("value") If lms.Contains(jtt("text").ToString()) = False Then lms.Add(jtt("text").ToString()) End If Next ss3 = String.Join("、", lms.ToArray) r("节点审批方式") = ss3 & ja(1)("value")("text").ToString() Next r("计时类型") = ja(0)("value")("vacation")("attendance")("date_range")("type").ToString() r("结束时间") = stt.AddSeconds(ja(0)("value")("vacation")("attendance")("date_range")("new_end").ToString()) r("开始时间") = stt.AddSeconds(ja(0)("value")("vacation")("attendance")("date_range")("new_begin").ToString()) r("天数") = ja(0)("value")("vacation")("attendance")("date_range")("new_duration").ToString() /86400 ElseIf jo("info")("sp_name").ToString() = "加班" Then r("节点审批方式") = ja(0)("value")("text").ToString() & ja(1)("value")("text").ToString() r("结束时间") = stt.AddSeconds(ja(2)("value")("attendance")("date_range")("new_end").ToString()) r("开始时间") = stt.AddSeconds(ja(2)("value")("attendance")("date_range")("new_begin").ToString()) ElseIf jo("info")("sp_name").ToString() = "补卡" Then r("节点审批方式") = ja(0)("value")("punch_correction")("state").ToString() & ja(0)("value")("punch_correction")("time").ToString() & ja(1)("value")("text").ToString() End If Next .NET Framework 版本:4.0.30319.1026 Foxtable 版本:2020.5.1.8 错误所在事件:窗口,通讯录管理,Button08,Click 详细错误信息: Object reference not set to an instance of an object. 下面是请假审批时的源码 ,要解析请假类型(公休假)
[此贴子已经被作者于2020/5/20 0:18:18编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/5/20 9:07:00 -- 这种一般是不存在某个节点,比如:【 ja(0)("value")("vacation")("attendance")("date_range")("type").ToString()】,如果不存在"value"、"vacation"、...等其中一个就会出错 自己调试是哪一句代码的问题,具体到某一句代码:http://www.foxtable.com/webhelp/scr/1485.htm
|