火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【开源】水淼JSON类 - 使用火山编写的高性能读写JSON

  [复制链接]

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
跳转到指定楼层
楼主
发表于 2021-6-11 18:27:45 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 shuimiao 于 2021-6-12 00:36 编辑
本模块仅供交流学习JSON格式解析,建议规范使用JOSN解析,遵循JSON基本规范。
  1. 2021年6月11日 22:23:31 补上了取字节集字节()和置字节集字节()方法,并修改这2个方法不用去改库就能运行
  2. 2021年6月11日 23:32:51 修复了置字节集字节()方法整数型溢出的问题,并修改相关方法前缀为_
  3. 2021年6月12日 00:30:42 添加子节点()方法补上参考返回添加后的子节点。该方法支持重复键名,不符合json规范,请慎用,建议使用 子节点() 方法就不会发生重名。
复制代码

游客,如果您要查看本帖隐藏内容请回复


水淼JSON类除了支持JSON基本解析规则之外,还独家增强:

1、键值对的单双引号混合识别
2、键值对的无引号识别
3、空白键名识别(允许对象内容像数组内容那样只给出键值而没有键名)
4、重复键名识别(按序号定义,如 键名->5 代表第6个重名的键名)
5、并列多组不同来源的JSON数据识别
6、通过解析文件流的方式对无限大文件(如10G)的指定路径的读取。
7、读写编码为Unicode,故支持万国语言。
8、全方位优化解析和读写数据的速度,远超市面JSON类库。


水淼JSON类相对火山自带的JSON数据访问支持类库,解析速度差不多,但是读数据的速度是火山自带的不知道多少倍了(实测10MB文件,相同路径访问,水淼只要0毫秒,火山自带的要几十秒),而且水淼的读写数据的语法简单,直接给出路径一步到位取出数据,也可以逐级取出数据()。









评分

参与人数 6金钱 +13 收起 理由
xuezhq + 5 实测发现,非常NB,请楼主继续维护,可替代.
上等兵 + 1 很给力!
wtuauwfn + 1 很给力!
米粒 + 2 很给力!
伟业 + 1 赞一个!
呵呵仙8 + 3 很给力!

查看全部评分

回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
沙发
 楼主| 发表于 2021-6-11 20:22:04 | 显示全部楼层
本帖最后由 shuimiao 于 2021-6-11 20:24 编辑
0晨鹤0 发表于 2021-6-11 20:10
楼主NB,但说一下个人想法 仅供探讨。

我觉得最好还是严格遵守 RFC 7159 所定义的 JSON 规范。对于单双引 ...

你说的我没有想过。不过我觉得这应该没什么影响吧,这是独属火山的增强。而且我这个人总喜欢创造出特色,强迫症没办法。写节点时默认都是双引号,是符合统一规范的
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
板凳
 楼主| 发表于 2021-6-11 20:42:49 | 显示全部楼层
呵呵仙8 发表于 2021-6-11 20:25
一个类写了1m的源码!!你也太牛了!!

, 199: 错误: 没有找到所指定的方法名称"置字节集字节"

我补上这个方法了,重新下载
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
地板
 楼主| 发表于 2021-6-11 20:43:01 | 显示全部楼层
nurjay 发表于 2021-6-11 20:28
我这也是最新版,怎么少了“置字节集字节”这个命令?

我补上这个方法了,重新下载
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
5#
 楼主| 发表于 2021-6-11 21:04:25 | 显示全部楼层
呵呵仙8 发表于 2021-6-11 20:53
1m的文件,直接作为库分享得了!!

我之前也封装了个库,不知道为什么不行。。不过直接源码文件添加到自己的项目,一样使用,也是很方便的
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
6#
 楼主| 发表于 2021-6-11 21:11:04 | 显示全部楼层
呵呵仙8 发表于 2021-6-11 21:03
这个是你自己加入到基础库的吗?字节集类变量的

重新下载新的源码,就有这个置字节集字节()方法了,这个是我根据字节集类内部相关命令改写的,也是要放到类内部去,不会影响原先功能
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
7#
 楼主| 发表于 2021-6-11 21:14:31 | 显示全部楼层
创世魂 发表于 2021-6-11 20:58
影响很大的亲。。。你是在火山用了,但是火山的用户终究不会一辈子用火山。早晚一天会扩散出去。。蝴蝶效 ...

我觉得这个没什么吧,如果是要与其它语言对接,默认写数据就是符合标准规范的。如果是火山内部用,那增强一点不是更好吗
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
8#
 楼主| 发表于 2021-6-11 21:37:09 来自手机 | 显示全部楼层
小蜗牛 发表于 2021-6-11 21:35
不遵循标准...你这个源码下载下来...没有一个人可以直接用....

怎么会,任何标准json数据都能解析。只是增强,又不是乱改
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
9#
 楼主| 发表于 2021-6-11 21:38:30 来自手机 | 显示全部楼层
呵呵仙8 发表于 2021-6-11 21:34
是取,不是置,你第2次修改上转了吗?

最新下载取和置都有
回复

使用道具 举报

369

主题

2254

帖子

7323

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
7323
10#
 楼主| 发表于 2021-6-11 21:46:39 | 显示全部楼层
小蜗牛 发表于 2021-6-11 21:39
没有..我不是说JSON标准...我是说没有使用火山标准,改火山的库....

源码里我有说明,那个取字节集字节()和置字节集字节()是增强方法,直接复制到字节集类内部就能用,也不会影响字节集类原先功能。我也不想写这个方法,关键是火山没有啊。其实不用放字节集类内部也可以,只是那样效率差了点。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 01:12 , Processed in 0.095221 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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