递归火山软件开发平台

标题: 水淼Json怎么处理这种无键名的数据 [打印本页]

作者: wsshh    时间: 2023-10-3 07:02
标题: 水淼Json怎么处理这种无键名的数据
怎么遍历循环取出JSON内的Ci开头的值 (, 下载次数: 12)



作者: shuimiao    时间: 2023-10-3 09:39
解析到水淼的json工具上面,看看路径如何显示,直接复制路径到火山读写
作者: 创世魂    时间: 2023-10-3 10:01
水淼没用过,但是yyjson是下面这么写。要自己写递归循环。

另外这个没有键名的叫 JSON数组  有键名的叫JOSN对象
(, 下载次数: 11)



  1. <火山程序 类型 = "通常" 版本 = 1 />

  2. 类 我的主窗口 <公开 基础类 = 窗口 注释 = "样例主窗口" @视窗.布局 = "client_size = "730, 554"">
  3. {
  4.     变量 编辑框1 <类型 = 编辑框 折叠2 隐藏值属性 = "0" @视窗.布局 = "id = 101\r\npos = "45, 30, 616, 480"" 是否允许多行 = 真
  5.             滚动条 = 纵向滚动条>
  6.     变量 JSON <类型 = YYJSON只读对象类>

  7.     方法 我的主窗口_创建完毕 <接收事件 类型 = 整数 注释 = "当本组件及其中所有子组件均被创建完毕后发送此事件.">
  8.     参数 来源对象 <类型 = 我的主窗口 注释 = "提供事件产生的具体来源对象">
  9.     参数 标记值 <类型 = 整数 注释 = "用户调用"挂接事件"命令时所提供的"标记值"参数值,非此方式挂接事件则本参数值固定为0.">
  10.     {
  11.         JSON.创建自文件 (取特定目录 (特定目录类型.系统桌面) + "json.txt")
  12.         数组递归解析 (JSON.到数组 ())
  13.         返回 (0)
  14.     }

  15.     方法 数组递归解析
  16.     参数 参_数组 <类型 = YYJSON只读数组类>
  17.     {
  18.         变量 计次 <类型 = 整数>
  19.         参_数组.枚举循环 ()
  20.         {
  21.             变量 类型 <类型 = YYJSON值类型>
  22.             类型 = 参_数组.取枚举值 ().取类型 ()
  23.             变量 局_嵌套对象 <类型 = YYJSON只读对象类>
  24.             局_嵌套对象 = 参_数组.取成员 (计次)
  25.             如果 (类型 == YYJSON值类型.数组值)
  26.             {
  27.                 数组递归解析 (局_嵌套对象.到数组 ())
  28.             }
  29.             否则
  30.             {
  31.                 如果 (是否以文本开头 (局_嵌套对象.到文本 (), "Ci"))
  32.                 {
  33.                     编辑框1.加入文本行 (局_嵌套对象.到文本 ())
  34.                 }
  35.             }
  36.             计次 = 计次 + 1
  37.         }

  38.     }
  39. }

复制代码


作者: shuimiao    时间: 2023-10-3 10:29
先用解析工具查看路径情况,再复制路径到火山读

(, 下载次数: 11)


(, 下载次数: 12)


<火山程序 类型 = "通常" 版本 = 1 />

方法 测试读Json
{
    变量 JSON <类型 = 水淼JSON类>
    变量 数量 <类型 = 整数>
    JSON.解析 (取剪辑板文本 ())
    // 目标数据的第一个地址 [1][0][11]
    数量 = JSON.读路径子数 ("[1]")
    调试输出 ("数量", 数量)
    计次循环 (数量)
    {
        调试输出 (JSON.读路径值 ("[1][" + 到文本 (取循环索引 ()) + "][11]"))

    }

}




作者: shuimiao    时间: 2023-10-3 10:35
本帖最后由 shuimiao 于 2023-10-3 10:36 编辑
创世魂 发表于 2023-10-3 10:01
水淼没用过,但是yyjson是下面这么写。要自己写递归循环。

另外这个没有键名的叫 JSON数组  有键名的叫JOS ...

yy要递归还要判断开头字符这么麻烦的吗?你看看我的,直接到位。。已回复例子
作者: fengyishen    时间: 2023-10-3 15:56
shuimiao 发表于 2023-10-3 10:35
yy要递归还要判断开头字符这么麻烦的吗?你看看我的,直接到位。。已回复例子 ...

除了速度比YY慢一些,易用性,兼容性,扩展性完胜火山圈子里任何JSON,一直在用,点个赞
作者: shuimiao    时间: 2023-10-3 17:52
fengyishen 发表于 2023-10-3 15:56
除了速度比YY慢一些,易用性,兼容性,扩展性完胜火山圈子里任何JSON,一直在用,点个赞 ...

因为要解析为树结构可能会略慢一点,但是不是巨大数据不会感觉到慢的。至于读路径,如果路径层级比较深入而且固定路径需要读取下面的数组,可以设置前缀路径来直达访问。

如 前面的例子,第一个目标路径:[1][0][11]

JSON.读路径子数 ("[1]",真)//真就是启用前缀路径

启用路径前缀前是这样访问:
JSON.读路径值 ("[1][" + 到文本 (取循环索引 ()) + "][11]")
启用路径前缀后是这样访问:
JSON.读路径值 ("[" + 到文本 (取循环索引 ()) + "][11]")


路径前缀就是免去前面固定路径的每次寻找过程,直达该固定路径的指针处开始读取后面的路径,在遇到层级多数据大的情况下,速度飙升。这也是树结构的优点。读取时间唯一耗在路径的寻找上,前缀路径就能减少不必要的时间,还能简化后续的路径访问。





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4