递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 3583|回复: 6
打印 上一主题 下一主题

[视窗] 水淼Json怎么处理这种无键名的数据

[复制链接]

18

主题

61

帖子

354

积分

中级会员

Rank: 3Rank: 3

积分
354
跳转到指定楼层
楼主
发表于 2023-10-3 07:02:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
怎么遍历循环取出JSON内的Ci开头的值 文本文档 (2).zip (136.33 KB, 下载次数: 12)


回复

使用道具 举报

410

主题

2511

帖子

8281

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8281
沙发
发表于 2023-10-3 09:39:23 来自手机 | 只看该作者

回帖奖励 +2 金钱

解析到水淼的json工具上面,看看路径如何显示,直接复制路径到火山读写
回复

使用道具 举报

444

主题

1万

帖子

4万

积分

超级版主

Rank: 8Rank: 8

积分
40529
板凳
发表于 2023-10-3 10:01:31 | 只看该作者
水淼没用过,但是yyjson是下面这么写。要自己写递归循环。

另外这个没有键名的叫 JSON数组  有键名的叫JOSN对象




  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. }

复制代码

安卓无障碍实战课:点击查看
交流群:641526939
回复

使用道具 举报

410

主题

2511

帖子

8281

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8281
地板
发表于 2023-10-3 10:29:56 | 只看该作者
先用解析工具查看路径情况,再复制路径到火山读







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

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

    }

}



回复

使用道具 举报

410

主题

2511

帖子

8281

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8281
5#
发表于 2023-10-3 10:35:06 | 只看该作者
本帖最后由 shuimiao 于 2023-10-3 10:36 编辑
创世魂 发表于 2023-10-3 10:01
水淼没用过,但是yyjson是下面这么写。要自己写递归循环。

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

yy要递归还要判断开头字符这么麻烦的吗?你看看我的,直接到位。。已回复例子
回复

使用道具 举报

12

主题

301

帖子

2704

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2704
6#
发表于 2023-10-3 15:56:12 | 只看该作者
shuimiao 发表于 2023-10-3 10:35
yy要递归还要判断开头字符这么麻烦的吗?你看看我的,直接到位。。已回复例子 ...

除了速度比YY慢一些,易用性,兼容性,扩展性完胜火山圈子里任何JSON,一直在用,点个赞
回复

使用道具 举报

410

主题

2511

帖子

8281

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8281
7#
发表于 2023-10-3 17:52:11 | 只看该作者
fengyishen 发表于 2023-10-3 15:56
除了速度比YY慢一些,易用性,兼容性,扩展性完胜火山圈子里任何JSON,一直在用,点个赞 ...

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

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

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

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


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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 05:08 , Processed in 0.099331 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表