【10.0.100】终于使用服务端命令实现多级json拼接
心心念念几年的复杂多级json拼接,在论坛里也搜了很多次,因为不是开发,自己认知也有限,一直没搞清楚,也没时间搞,最近看到10.0横空出世,实在手痒痒,忍不住搞了几天,可算是有点谱了……所以来这写篇帖子告慰一下自己熬的夜。。。先看效果:
目前已知的拼接方法:
1、前端界面硬拼,总觉得不高端
2、JS等代码开发,没基础
3、用SQL在数据库层面拼接,能实现,感觉不是他该干的事
4、活字格服务端命令
5、其他还有什么更好的方法,请不吝赐教
目标json结构:
{
"time": "20240830",
"sign": "abc123",
"Model": {
"ModelId": "ModelId001",
"ModelText": "Model文本",
"req": {
"reqId": "reqId001",
"reqText": "req文本"
},
"head": {
"headId": "headId001",
"headText": "head文本"
},
"line": [
{
"lineId": "1",
"lineText": "line1文本",
"lot": [
{
"lotId": "lotId001",
"lotText": "lot1文本"
},
{
"lotId": "lotId002",
"lotText": "lot2文本"
}
]
},
{
"lineId": "2",
"lineText": "line2文本"
}
]
}
}
实现中遇到的几只拦路虎:
一、非主子表的结构怎么拼接?(别问为什么设计成这样子,我也想知道)
解决:设置变量中用单行记录+设置变量子属性
二、主子表拼接?
参考专题教程
帮你打开活字格更神奇的功能:九十六、服务端命令构建主子表的JSON结构 https://gcdn.grapecity.com.cn/template/gc2019/src/icon/hot_2.gif
三、设了那么多参数,怎么用? 把名称区别开了挨个试
当前循环对象变量名称》》 就是每次循环里面的那一条
所以在后面筛选行数据的时候,用的是“=Z3_head表_当前循环变量.headId”
四、指定循环次数的时候要怎么选?
选 “=Z3_head表变量”时,在后面行表筛选时才能选到 “=Z3_head表_当前循环变量.headId”
……
把想要的结构搞出来那一刻,忽然就觉得……嗯……我又行了……
其他说明:
json拼接head和line和lot 》》 父子孙表三层json
json拼接Z1和model 》》 见上文拦路虎一
json拼接all 》》最终结构
具体可查看附件
{:5_115:} 哎。这位同学。这用服务器命令。速度是个问题啊。为何不用存储过程呢? 本帖最后由 1525755450 于 2024-9-29 16:02 编辑
lh123 发表于 2024-9-28 07:49
哎。这位同学。这用服务器命令。速度是个问题啊。为何不用存储过程呢?
目前的一个认知,仅供参考
在数据库层面处理,增加数据库的负载,如果是复杂系统,容易导致数据库瓶颈
用服务器命令,相当于负载放到应用服务器处理,结合新功能k8s实现多应用服务器,能提高可用性和扩展性
如果这个json像是一个对象或数组,那么先用对象与集合操作工具,把对象攒出来。然后JSON序列化成字符串,这样做可维护性好一些。 willning 发表于 2024-9-29 18:23
如果这个json像是一个对象或数组,那么先用对象与集合操作工具,把对象攒出来。然后JSON序列化成字符串,这 ...
感谢感谢!刚搜了下,对象与集合操作工具 确实可以,特别是这个示例,要仔细看
https://gcdn.grapecity.com.cn/showtopic-175775-1-1.html
因为我只是对json格式有些概念,没有对象啊什么偏技术的概念,就想着跟着教程照猫画虎,按目标json尝试一层层一个个拼接,没有找到这种比较清晰完整讲解拼接复杂json的例子,看到服务端命令的例子,就想试一下。
回头用对象与集合操作工具再试一版 学习了 学习了 学习
页:
[1]