1525755450 发表于 2024-8-30 15:22:58

【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 》》最终结构



具体可查看附件




赛龙周 发表于 2024-8-30 17:17:50

{:5_115:}

lh123 发表于 2024-9-28 07:49:25

哎。这位同学。这用服务器命令。速度是个问题啊。为何不用存储过程呢?

1525755450 发表于 2024-9-29 16:00:07

本帖最后由 1525755450 于 2024-9-29 16:02 编辑

lh123 发表于 2024-9-28 07:49
哎。这位同学。这用服务器命令。速度是个问题啊。为何不用存储过程呢?
目前的一个认知,仅供参考
在数据库层面处理,增加数据库的负载,如果是复杂系统,容易导致数据库瓶颈
用服务器命令,相当于负载放到应用服务器处理,结合新功能k8s实现多应用服务器,能提高可用性和扩展性

willning 发表于 2024-9-29 18:23:51

如果这个json像是一个对象或数组,那么先用对象与集合操作工具,把对象攒出来。然后JSON序列化成字符串,这样做可维护性好一些。

1525755450 发表于 2024-9-30 10:38:00

willning 发表于 2024-9-29 18:23
如果这个json像是一个对象或数组,那么先用对象与集合操作工具,把对象攒出来。然后JSON序列化成字符串,这 ...

感谢感谢!刚搜了下,对象与集合操作工具 确实可以,特别是这个示例,要仔细看
https://gcdn.grapecity.com.cn/showtopic-175775-1-1.html

因为我只是对json格式有些概念,没有对象啊什么偏技术的概念,就想着跟着教程照猫画虎,按目标json尝试一层层一个个拼接,没有找到这种比较清晰完整讲解拼接复杂json的例子,看到服务端命令的例子,就想试一下。

回头用对象与集合操作工具再试一版

137294886 发表于 2024-10-4 00:06:26

学习了

renho 发表于 2024-10-6 12:40:48

学习了               

ZDYW 发表于 2024-11-11 14:38:38

学习                                       
页: [1]
查看完整版本: 【10.0.100】终于使用服务端命令实现多级json拼接