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:}
页: [1]
查看完整版本: 【10.0.100】终于使用服务端命令实现多级json拼接