QJson与QMsgPack中的RTTI调用演示

QJson和QMsgPack提供了对RTTI的支持,让你可以简洁方便的完成数据的转换存贮。因为QJson和QMsgPack在RTTI接口上是一致的,因此本文以QJson为例予以说明,如果要换成QMsgPack,只需要将类型声明换下就好:)。 1、记录类型 我们提供了FromRecord/ToRecord两个函数来完成记

QJson更新-修正了FromRtti/ToRtti在处理TCollection类型时存在的问题

【问题描述】 由于FromRtti在处理TCollection类型的对象时,没有将对象类型改成数组,造成由于子结点没有名称而被提示:“对象 xxx 的第 n 个子结点名称未赋值,编码输出前必需赋值。”。 要重现问题,只需要简单的传递一个TCollection对象给FromRtti函数即可。 另外,对应的ToRtti函数

QJson与RapidJson性能的简单对比测试

盒子上一位朋友想知道QJson和C++编写的RapidJson之间的性能对比情况,限于精力,我只是简单的测试了下加载一个大的Json文件来对比解析性能(Demos\Delphi\VCL\QJson\Preferences.txt,文件大小:9.81MB),但做测试大家都知道与测试样本的关系很大,这里只对这一个测试用例负

QJSON更新-修正了移动节点时未检查自己是否是目标的父结点问题

【问题描述】 新增加的函数MoveTo在移动结点时,如果错误的将目标结点设置为自己的子结点,程序未报错但执行结果是错的。本更新解决这一问题,并会在发生这一情况时抛出异常,提示用户不能将自己移动到自己的子结点下。 【严重程序】 中等 【更新级别】 推荐

QJSON更新-修改了保存策略

【问题描述】 QJSON如果直接保存一个结点,而这个结点不是对象或数组时,可能会生成无效的JSON数据,因此,将保存的策略进行了变更: 1、如果JSON结点的名称已经指定,则保存为对象的一个子对象; 2、如果未指定名称,且类型为未知或为jdtNull,则不保存任何内容 【严重级别】 中 【更新级别】 建议更新 【特别感

QJson更新-修复了阿木报告的一个Bug

问题是由于解析带有注释时JSON数据时,如果后面跟着数组或对象结束符,解析会失败。例如下面的JSON代码会解析失败: { “Name”:”MyName” //这是引起问题的注释 } 感谢阿木的报告,问题已经得到修正,没有包含注释的JSON不会受此问题影响。  

QJSON中编码函数Encode的特别说明

QJson.Encode是用于将当前JSON对象的内容格式化为字符串的函数,AsString/toString/AsJson函数实际低层都调用了它,而在网络传输时,我们实际上并不需要换行等空白字符,此时,手动调用Encode时将第一个ADoFormat参数设置为False。另外,部分控件或软件可能要求中文等特殊字符必需

QJSON – Delphi下快速的JSON解决方案

    JSON做为一个后起的通用数据交换格式,Delphi后期的版本虽然提供了原生的支持,但早期并没有提供支持,由此产生了许多的JSON解析器,如lkJson、SuperObject的Json单元、RTC的Json单元,但当我们要找到符合下述要求的JSON组件时,会发现几乎没有什么选择:     √ 开源,可以免费使