递归火山软件开发平台

标题: 【源码】PC Easy模块~也许是又一款好用的JSON库[250321更新] [打印本页]

作者: 小小小小鸟    时间: 2025-3-17 13:35
标题: 【源码】PC Easy模块~也许是又一款好用的JSON库[250321更新]
本帖最后由 小小小小鸟 于 2025-3-21 17:20 编辑

火山自带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交流。
(, 下载次数: 30)
压缩包内为模块安装包(安装后为纯源码,无部件)和示例。
250321:优化存取键值表的取键数组和取键列表,进行预分配提速。
新增创建自字节集(从UTF16文本的字节集载入)和到字节集(转为JSON文本后再到字节集)。
修复JSON解析工具一处bug。
250320:
新增跨DLL传递键值表和列表例程。
新增是否为空方法,判断键值表或列表有无子成员。
修复列表指针一处文字性错误。
跨DLL调用示例:
(, 下载次数: 24)
250318: 规范命名和注释。
250317: 修复几处BUG,增加JSON解析工具示例:
(, 下载次数: 25)










作者: kingsoft    时间: 2025-3-17 13:40
沙发沙发,豪华大沙发!
作者: alanwoo    时间: 2025-3-17 13:54
学习学习
作者: lizcst    时间: 2025-3-17 14:06
感谢分享
作者: zqiz    时间: 2025-3-17 14:22
66666666
作者: urenai    时间: 2025-3-17 14:23
厉害了。
作者: 火绒    时间: 2025-3-17 14:36
学习一下
作者: 7325701    时间: 2025-3-17 14:49
压缩包内为模块安装包
作者: Xelloss0618    时间: 2025-3-17 14:51
66666 学习
作者: zqiz    时间: 2025-3-17 16:16
--- 开始编译项目"json示例":
编译生成对应的C++源文件到目录"C:\Intel\Easy模块示例\json示例\debug\x64\project\"成功 [双击可跳转]
正在链接生成目标文件"C:\Intel\Easy模块示例\json示例\debug\x64\linker\json示例.exe"
所编译程序位数: 64; 所使用 VS 本地编译器版本: 16; 所使用 Windows SDK 版本: 10.0.18362.0(内置)
正在进行本地编译和链接工作(如果是首次编译,由于需要初始化编译环境和相关缓存,速度稍慢是正常的)
错误: 使用所指定的本地编译器编译当前程序失败
错误:
    D:\win_android_chs_free\plugins\vprj_win\classlib\user\\Easy模块\\src\\json\\vol_json.h(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
    D:\win_android_chs_free\plugins\vprj_win\classlib\user\Easy模块\src\json\../common/vol_common.h(108): error C2065: “PF_SSE4_2_INSTRUCTIONS_AVAILABLE”: 未声明的标识符
    D:\win_android_chs_free\plugins\vprj_win\classlib\user\\Easy模块\\src\\json\\vol_json.h(982): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
    D:\win_android_chs_free\plugins\vprj_win\classlib\user\\Easy模块\\src\\json\\vol_json.h(1752): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
编译生成目标文件"C:\Intel\Easy模块示例\json示例\debug\x64\linker\json示例.exe"失败,耗费时间 1265 毫秒.
--- 项目"json示例"编译或链接失败. 编译过程中共遇到了 0 个警告, 2 个错误.
作者: 小小小小鸟    时间: 2025-3-17 16:48
zqiz 发表于 2025-3-17 16:16
--- 开始编译项目"json示例":
编译生成对应的C++源文件到目录"C:\Intel\Easy模块示例\json示例\debug\x64\p ...

这个是在winnt.h中定义的宏,正常情况下是被自动包含的,你需要检查下你的自定义宏
作者: zqiz    时间: 2025-3-17 17:03
小小小小鸟 发表于 2025-3-17 16:48
这个是在winnt.h中定义的宏,正常情况下是被自动包含的,你需要检查下你的自定义宏 ...

不懂,不知怎么改,这模块我没有动啊,你们的没问题么
作者: 小小小小鸟    时间: 2025-3-17 17:21
zqiz 发表于 2025-3-17 17:03
不懂,不知怎么改,这模块我没有动啊,你们的没问题么

还真没有,你可以加群695360425 帮你看看
作者: 兵三进一    时间: 2025-3-17 17:24
高手在民间,致敬
作者: nurjay    时间: 2025-3-17 17:58
学习一下
作者: 回忆菌    时间: 2025-3-17 19:09
支持一下
作者: 南湾    时间: 2025-3-17 22:02
我看看
作者: 888888    时间: 2025-3-17 22:28
谢谢分享
作者: 拒绝吃鱼的猫    时间: 2025-3-17 22:40
支持我兄弟来了
作者: rinipp    时间: 7 天前
牛逼。。。。。。
作者: zqiz    时间: 7 天前
小小小小鸟 发表于 2025-3-17 17:21
还真没有,你可以加群695360425 帮你看看

谢谢
作者: cxz7411    时间: 7 天前
关键是速度和内存占用.
作者: 小小小小鸟    时间: 7 天前
本帖最后由 小小小小鸟 于 2025-3-18 12:32 编辑
cxz7411 发表于 2025-3-18 11:48
关键是速度和内存占用.

哈哈 欢迎测评 可以对比看看
作者: aixunsoft    时间: 7 天前
感谢分享
作者: htpmcj    时间: 7 天前
66666666
作者: 67564226    时间: 7 天前
我靠这个牛逼
作者: yifan09    时间: 7 天前
学习学习
作者: lichenxui    时间: 7 天前
6666
作者: 高山!&流水    时间: 7 天前
学习一下,哈哈
作者: glbosom    时间: 7 天前
厉害
作者: lvzhi_123    时间: 7 天前
感谢分享
作者: 阿海    时间: 6 天前
学习学习,谢谢了
作者: 2767944492    时间: 6 天前

作者: asxzwang    时间: 6 天前
楼主好人啊!
作者: dengzf    时间: 6 天前
支持开源, 下载
作者: 秋天的童话    时间: 5 天前
感谢分享
作者: ku2017    时间: 5 天前
学习一下看看
作者: 拒绝吃鱼的猫    时间: 5 天前
继续支持来了
作者: 白雪皑皑0306    时间: 4 天前
谢谢分享      
作者: ku2017    时间: 4 天前
相比较YYJOSN 有哪些优势, 速度差异或体积等
作者: 明靓    时间: 4 天前
666
作者: guangye1    时间: 4 天前
我看看怎么个事
作者: amwji    时间: 4 天前

66666 学习
作者: blackvolcano    时间: 4 天前
支持666666666
作者: 拒绝吃鱼的猫    时间: 4 天前
过来支持我兄弟
作者: 芒g一号    时间: 3 天前
感谢分享!!
作者: yyk80238    时间: 3 天前
666666666
作者: 网猫    时间: 前天 00:59

作者: 505468652    时间: 前天 20:31
先收藏 以后可能用得到  
作者: 次元の叶子    时间: 昨天 11:32
非常感谢,非常灵活
作者: huand    时间: 昨天 11:39
看看呢地方




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