QJson 4.0 版目前首个内测版本已经提交到 4.0 分支中,目前初步性能测试结果对比如下: 用例 System.JSON QJson 3.0 QJson 4.0 普通模式 QJson 4.0 只进模式 {“a”:null} 375ms 531ms 282ms 250ms {“b
分类: QJSON
[付费]数据集内容输出 JSON 格式数据
嗯,这是一个试验性的收费产品,它是做为 TQJsonOutputChannel 的附属品存在的,信赖于 qjson_output_channel 单元,提供数据集转换为 JSON 数据内容的格式化输出支持。收费标准定为 200 元,含源码、示例和用法一对一指导。 【使用方法】 一如既往的简单,直接引用 qjson_da
[教程]QJSON 如何生成数组类型JSON数据
目标样式:[{“a”:123}, {“b”:123}, {“c”:123}] 首先,我们来看它的层级,第一层是一个数组,第二层为一个对象,所以,使用 QJSON 生成时,也就是下面的形式了: 最终生成的结果就如上面一样。如果遇到需要转义中文字符的场
[QMathExpr]为 QJson 增加 QMathExpr 支持
QMathExpr 可以方便的实现表达式的计算,将它与 QJson 结合在一起,就可以对内容进行加工处理,为程序的实现提供更大的灵活性。同样的,你可以同样将 QXML/QMsgPack 一样封装下,为其加上 QMathExpr 的支持。 调用示例:
泛型数组清空数据
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知 我是怀疑泛型数组 setlength后会不会清零,弄了个小demo,不知道为什么我会有这个想法,难道是我看数据结构入魔了,记得记录指针需要另类释放问题。 记不清了 脑袋完蛋了 上demo ,事实证明setlengt
Qjson中把json字符串,当做子节点的方法
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 procedure TForm4.btn2Click(Sender: TObject); const //外部的一个Json做子节点 AJsonStr = ‘{“name”:”奥巴马”,”age”:18}’; v
qjson中把记录或类型或泛型数组转换为json字符串
我一直都在寻找各种业务功能的最简单写法,用减法的模式来开发软件。如果有比我的写法更简单的方法,请留言告知。 unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Class
[QJSON] 更新:修正了一处内存访问越界的问题
【问题描述】 该问题是由于 JsonCat 函数在计算需要的内存空间时,考虑不周造成的。新版修正了这一问题。 【严重程度】 高 【推荐程序】 高 【特别感谢】 熊猫叔叔
[QJSON] 更新:修正了 IOS 64 无法编译的问题
【问题描述】 该问题是由于 IOS 64 编译器未正确分区 TStream.Seek,不知道如何调用引起的。修正的代码强制进行了类型转换,以让其正确识别。 【严重程度】 低(仅影响IOS64) 【推荐级别】 可选 【特别感谢】 wealsh
[QMsgPack/QJson] 更新:修正了修改结点名字时,没有重新计算结点名称哈希值的问题
【问题描述】 该问题是由于 DoNodeNameChanged 的重载里,Rehash 子函数在查找结点原来的哈希记录时,使用了错误的哈希表对象引起的。 【严重程度】 高 【影响范围】 使用 TQHashedJson 和 TQHashedMsgPack 的用户 【推荐级别】 歌德 【特别感谢】 QQ
[QJSON] 常见问题及解答
1、如何创建根结点为数组类型的JSON对象? 直接设置根结点的 DataType 为 jdtArray 即可。然后数组的子元素只需要挨个调用 Add 添加即可。 2、如何遍历 JSON 子结点的信息? QJson 的 Count 属性记录了数组或对象的子结点数量,然后您可以使用正常的循环来遍历子元素,如: var AI
[QJSON+QMsgPack] 更新:修正了 ItemByPath 对特定数组路径的支持问题
【问题描述】 对于根结点为数组类型的 JSON 或 MessagePack 对象,使用 ItemByPath 访问时,无法得到正确的返回值。以 JSON 为例,下面的 JSON 结构: [ [ { “name”: “1” }, { “name”: “2” } ], [ { “name”: “3” }, { “name”
[QJSON+QMsgPack] 修正了 TQHashedJSON 和 TQHashedMsgPack 释放时的Bug
【问题描述】 该问题是由于先释放了内部的哈希表对象,而父类再释放时调用 Clear 时再次引用该对象造成的。 【严重级别】 高 【推荐程度】 中 【特别感谢】 QQ
[QJson+QWorker] 更新:两点小更新
【更新说明】 1、QWorker 将 MsgWaitForEvent 函数公开出来,以便其它模块使用; 2、QJson 将 SetValue.DetectValue 函数的检测方式做了下变更,直接调用 TryParseValue 而不是 ParseValue ,以避免在调试时由于检测不到合适的类型而抛出异常。 【更新级
DFM->JSON 格式转换
应群友的要求,编写了一个解析 DFM 文件格式,将其转换为 JSON 格式的函数,需要引用 QJSON 和 QString 单元。代码分享给大家,供大家参考: function DFM2Json(AFileName: String): TQJson; var ADFMStream, ATemp: TMemoryStre
[QJSON] 更新:保存 JSON 中的注释
QJSON 新版中增加了对注释保存的支持,早先版本的 QJSON 对于注释会自动跳过,不会保存注释的内容。但这一功能在 StrictJson 为 true 时不会支持,以兼容更多的解析器。 QJSON 中,注释的保存通过 CommentStyle 属性来控制: jcsIgnore : 忽略掉注释,保存时不会保存注释的内
[QJSON] 更新:使用 Equals 来判定两个 JSON 的内容是否一致
QJSON 新版重新实现了一个 Equals 函数,来判定两个 JSON 对象的内容是否一致。用法也很简单: JSON1.Equals(JSON2); 两个JSON的对象的内容,如果完全一致,则返回 True ,存在不一致的内容,则返回 False。 这里,所谓的一致是指:名称、类型和值三者皆相同,如下面的JSON对象
[QJSON] 使用 QJSON 的一些函数时的注意事项
QJSON 推出已经有相当一段时间了,经过这么多版本的更新,到了该回顾一下的时候。今天这篇文章算是一个简单的总结回顾,对大家使用 QJSON 过程中遇到的常见问题做一个简单的小结。 1、Add 系列函数 Add 系列函数用于添加一个子结点,它有 n 个重载的版本,最让大家疑惑的是下面的这个重载: function TQ
[QJSON] 更新:增加多个函数
【更新说明】 + 增加函数 Sort 来支持对子结点排序 + 增加 RevertOrder 反转子结点顺序 + 增加 ExchangeOrder 交互子结点顺序 + 增加 ContainsName 判断子结点中是否有指定名称的子结点 + 增加 ContainsValue 判断子结点中是否有指定值的子结点 + 增加 Ex
QJSON 更新 – 增加使用Base64编码二进制数据的默认支持
【更新说明】 新增函数 EncodeJsonBinaryAsBase64 直接用来支持你在 AsBytes 、 ValueFromStream、ValueFromFile 赋值时,二进制编码为字符串时的处理方式。如果你不需要,只需要调用 EncodeJsonBinaryAsHex 就可以恢复原始的十六进制编码方式。 【