递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[视窗] 【源码】PC Easy模块~也许是又一款好用的JSON库[250402更新]

  [复制链接]

18

主题

182

帖子

2235

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2235
跳转到指定楼层
楼主
发表于 2025-3-17 13:35:25 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 小小小小鸟 于 2025-4-2 09:55 编辑

火山自带JSON库,由于各种各样的原因(内部有UTF8和UTF16的转码影响效率,json对象取值时是线性查找也影响效率,路径支持不完善等等),不方便使用,便自己写一款,命名有部分仿照易语言E2EE支持库(致敬),有以下特点:
1、【存取键值表】对应【JSON对象类】。【存取列表】对应【JSON数组类】。
2、键值表内部使用哈希表结构(Tessil/ordered-map,同时保证效率和键的顺序),列表内部使用std::vector结构。
3、取值和设置用嵌入式方法,不限参数,尽量方便编写代码,支持JSON PATH,JSON POINTER路径。比如:
        json.置值 ("a", "b", 0, "c", "d", 0, "e", 888)
        json.置值 ("//a.b[0].c.d.[0].['e']", 888)
        json.置值 ("/a/b/0/c/d/0/e", 888)
        最终结果都是等价的:  {"a":{"b":[{"c":{"d":[{"e":888}]}}]}}
        取值同样:
        json.取整数值 ("a", "b", 0, "c", "d", 0, "e")
        json.取整数值 ("//a.b[0].c.d.[0].['e']")
        json.取整数值 ("/a/b/0/c/d/0/e")
        也是等价的。
4、扩展支持存取火山对象和字节集。到Json时,对于字节集,将字节集数据转为base64文本写入结果,对于其它火山对象,将取对象数据转为base64文本写入结果(只支持取对象数据有结果的类)。注意: 从json载入后,base64文本会被识别为文本型,如需还原,字节集:base64文本到字节集(取出的文本);对象:对象.置对象数据(base64文本到字节集(取出的文本))。
5、利用火山宏和火山模板实现指针方便化操作,比如 存取键值表指针 使用方法完全和存取键值表一致,省略 读指针处对象(...)。
6、支持跨模块dll操作存取键值表和存取列表以及它们的指针。重载new和delete,所有内存的申请和释放调用系统api,避免内存泄漏和释放崩溃。
7、优化列表排序使用快速排序法。
8、JSON解析支持原位解析,较正常解析性能提升10%-40%(哈希表结构决定了原位解析无法像YYJSON那样提升明显,但是随机访问时复杂度近乎为O(1),本质为时间和空间的博弈)。注:JSON解析和到JSON用的RapidJSON的SAX风格解析技术,站在巨人的肩膀上,特此标明。
9、.......
欢迎测试使用,如有BUG或者建议,请随帖回复或加入QQ群695360425交流。

压缩包内为模块安装包(安装后为纯源码,无部件)和示例。

250402:
修复置逻辑值错误问题。

250329:
新增全局方法:创建键值表()、创建列表()、创建空键值表()、创建空列表()
对键值表和列表新增方法:从对象复制、复制到对象、从指针复制、复制到指针以实现赋值操作符。
250321:优化存取键值表的取键数组和取键列表,进行预分配提速。
新增创建自字节集(从UTF16文本的字节集载入)和到字节集(转为JSON文本后再到字节集)。
修复JSON解析工具一处bug。
250320:
新增跨DLL传递键值表和列表例程。
新增是否为空方法,判断键值表或列表有无子成员。
修复列表指针一处文字性错误。
跨DLL调用示例:

250318: 规范命名和注释。
250317: 修复几处BUG,增加JSON解析工具示例:

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











评分

参与人数 1金钱 +1 收起 理由
朕的 + 1 赞一个!

查看全部评分

回复

使用道具 举报

16

主题

241

帖子

917

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
917
61#
发表于 2025-4-22 19:31:20 | 只看该作者
学习学习
回复

使用道具 举报

0

主题

20

帖子

196

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
196
60#
发表于 2025-4-1 22:12:18 | 只看该作者
学习学习
回复

使用道具 举报

0

主题

14

帖子

82

积分

注册会员

Rank: 2

积分
82
59#
发表于 2025-4-1 22:00:00 | 只看该作者
感谢感谢感谢感谢感谢
回复

使用道具 举报

5

主题

28

帖子

12万

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
125849
58#
发表于 2025-3-29 19:29:10 | 只看该作者
试一试看看
回复

使用道具 举报

19

主题

133

帖子

982

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
982
57#
发表于 2025-3-29 16:27:40 | 只看该作者
学习
回复

使用道具 举报

1

主题

64

帖子

934

积分

高级会员

Rank: 4

积分
934
56#
发表于 2025-3-29 14:20:44 | 只看该作者
来看看这个好不好
回复

使用道具 举报

38

主题

671

帖子

3387

积分

论坛元老

Rank: 8Rank: 8

积分
3387
55#
发表于 2025-3-29 13:25:10 | 只看该作者
感谢分享
回复

使用道具 举报

2

主题

38

帖子

444

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
444
54#
发表于 2025-3-29 12:56:46 | 只看该作者
看看
回复

使用道具 举报

193

主题

1193

帖子

4840

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4840
QQ
53#
发表于 2025-3-29 12:08:28 | 只看该作者
1111111111111
全国活动会议直播拍摄
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-19 17:44 , Processed in 0.107887 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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