找回密码
 立即注册

QQ登录

只需一步,快速开始

1525755450

中级会员

7

主题

116

帖子

707

积分

中级会员

积分
707

圣诞拼拼乐

1525755450
中级会员   /  发表于:2024-8-30 15:22  /   查看:971  /  回复:8
心心念念几年的复杂多级json拼接,在论坛里也搜了很多次,因为不是开发,自己认知也有限,一直没搞清楚,也没时间搞,最近看到10.0横空出世,实在手痒痒,忍不住搞了几天,可算是有点谱了……所以来这写篇帖子告慰一下自己熬的夜。。。

先看效果:

图片.png612828063.png



目前已知的拼接方法:
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文本"
            }
        ]
    }
}

实现中遇到的几只拦路虎:
一、非主子表的结构怎么拼接?(别问为什么设计成这样子,我也想知道)

图片.png726366271.png
解决:设置变量中用单行记录+设置变量子属性
图片.png252484740.png
图片.png248617552.png

二、主子表拼接?
参考专题教程

帮你打开活字格更神奇的功能:九十六、服务端命令构建主子表的JSON结构                                

三、设了那么多参数,怎么用? 把名称区别开了挨个试

当前循环对象变量名称  》》 就是每次循环里面的那一条

图片.png803710021.png

所以在后面筛选行数据的时候,用的是“=Z3_head表_当前循环变量.headId”


图片.png21027525.png

四、指定循环次数的时候要怎么选?

图片.png858152770.png

选 “=Z3_head表变量”时,在后面行表筛选时才能选到 “=Z3_head表_当前循环变量.headId”

图片.png737635497.png

……

把想要的结构搞出来那一刻,忽然就觉得……嗯……我又行了……


其他说明:

json拼接head和line和lot 》》 父子孙表三层json

json拼接Z1和model 》》 见上文拦路虎一

json拼接all 》》最终结构

图片.png110214537.png

具体可查看附件




图片.png293150634.png
图片.png664189147.png

json拼接测试10.0.100.fgcc

852.89 KB, 下载次数: 2

售价: 10 金币  [记录]

多级json拼接测试

评分

参与人数 2金币 +66 满意度 +5 收起 理由
muto + 5
Grayson.Shang + 66 赞一个!

查看全部评分

8 个回复

倒序浏览
赛龙周
银牌会员   /  发表于:2024-8-30 17:17:50
沙发
回复 使用道具 举报
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
5#
如果这个json像是一个对象或数组,那么先用对象与集合操作工具,把对象攒出来。然后JSON序列化成字符串,这样做可维护性好一些。
回复 使用道具 举报
1525755450
中级会员   /  发表于:2024-9-30 10:38:00
6#
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
7#
学习了
回复 使用道具 举报
renho活字格认证
银牌会员   /  发表于:2024-10-6 12:40:48
8#
学习了                 
回复 使用道具 举报
ZDYW悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2024-11-11 14:38:38
9#
学习                                       
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部