赛龙周 发表于 2022-10-12 09:55:25

【8.0.100】对象操作工具集合插件使用案例

本帖最后由 赛龙周 于 2022-10-12 10:03 编辑

近日在测试钉钉OA审批集成时,在调用钉钉API接口时发现他的表格数据传输格式比较特殊,

"[[{\"name\":\"单行输入框\",\"value\":\"明细单行输入框\"},{\"name\":\"数字输入框\",\"value\":\"100\"}]]"
而活字格输出查询的json格式是这样的
"[{"编码":"001","名称":"计算机","数量":1},{"编码":"002","名称":"手机","数量":2}]"
需要转换成
[[{"name":"编码","value":"001"},{"name":"名称","value":"苹果"},{"name":"数量","value":"10"}],[{"name":"编码","value":"002"},{"name":"名称","value":"华为"},{"name":"数量","value":"20"}]]


怎么把数据表的格式转换成如上的数据格式,着实花了很长时间。百度上结果基本上是写代码的转换,自己也尝试抄了不少代码,也没有完全成功。代码实在写不下去了,于是在论坛上发了个咨询贴
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=155164&extra=


得到了@Grayson.Shang 大佬的热心支持,在他提供的DEMO基础上,完善后终于得到了如期的结果

总结此次数据格式转换在核心就是如何使用"对象操作工具集合"提供的三条命令1创建对象2创建数组读写3追加数组项目到已有数组的功能,以及设置变量子属性。

首先我们分析下需要的结果

这个数据格式拆分为三层:结果是个对象数组对应就是数据表,中间第二层也是个对象数组对应的是数据行,第三层是个对象对应是单元格。在服务端命令中分别创建数组对象:表格、行,数组项目为空。

再创建对象:字典,同时设置二个属性:name,value。

(为什么起名字典,原因我感觉像是像是dictionary数据类型。又因为它是引用数据类型,所以只能在循环的最里层定义。开始时把它定义在开始,结果所有对象的值都是最后一个对象的值,这点在调试时花了些时间)

这里面要取出数据需要二层循环嵌套,通过第一层循环取出行数组item

再通过第二层循环取出单元格对象keys,

意外发现,取出的数据有Key\Value属性,这样给变量子属性赋值就非常方便了

keys.Key,keys.Value 分别取出键名与键值赋给字典的name、value

通过追加数组项目到已有数组,把字典追加到行,把行追加到表格。

以上这个小需求的一点总结,附上DEMO文件。再次感谢@Grayson.Shang

renho 发表于 2022-10-12 11:34:02

绝了,2行js不就搞定了。

赛龙周 发表于 2022-10-12 12:24:48

renho 发表于 2022-10-12 11:34
绝了,2行js不就搞定了。

大佬有空分享一下您的JS代码,让我们也多学点技能:jy74a:

15725821270 发表于 2022-10-12 12:50:19

确实不用这么复杂的。。。。

heroniu50 发表于 2022-11-11 09:35:24

也正在对接钉钉OA审批,对于不会写代码的我算是解了燃眉之急了,期待各位大佬更简便的方法

137294886 发表于 2022-11-11 14:04:41

大佬有空分享一下您的JS代码

heroniu50 发表于 2022-11-11 15:11:33

按照大佬的命令怎么报错呢 创建的变量keys 的值不一样

赛龙周 发表于 2022-11-11 15:37:56

heroniu50 发表于 2022-11-11 15:11
按照大佬的命令怎么报错呢 创建的变量keys 的值不一样

你取的keys是个字符串,用字符串分割命令,分别把值赋给name \value

heroniu50 发表于 2022-11-11 16:25:16

赛龙周 发表于 2022-11-11 15:37
你取的keys是个字符串,用字符串分割命令,分别把值赋给name \value

大佬从数据中取出的多行数据是json格式,我从表格传参(数组)进去也是json,怎么大佬二次循环的时候得到的是数组我的是字符串呢,没有看明白……我的demo附上

赛龙周 发表于 2022-11-11 17:43:46

heroniu50 发表于 2022-11-11 16:25
大佬从数据中取出的多行数据是json格式,我从表格传参(数组)进去也是json,怎么大佬二次循环的时候得到 ...

稍后帮你看一下
页: [1] 2
查看完整版本: 【8.0.100】对象操作工具集合插件使用案例