JSON Objects Framework(1)
学习datasnap,json必须掌握。用自身的JSON,就必须熟悉JSON Objects Framework。其中tostring和value区别就是一个坑。
The JSON objects framework supports all JSON types:all descendants of TJSONValue
| TJSONObject |
| TJSONArray |
| TJSONNumber |
| TJSONString |
| TJSONTrue |
| TJSONFalse |
| TJSONNull |
建立一个name:value “Hello”:"World"
var
LJSONObject: TJSONObject; begin
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hello'),
TJSONString.Create('World')));
静态类函数ParseJSONValue或函数Parse可用于将字节流解析为等效的JSON值实例。
class function ParseJSONValue(const Data: TBytes; const Offset: Integer): TJSONValue; overload; static;
使用以下代码片段将JSON字符串表示转换为JSON。
const
GJSONString =
'{' +
' "name": {'+
' "A JSON Object": {' +
' "id": "1"' +
' },' +
' "Another JSON Object": {' +
' "id": "2"' +
' }' +
' },' +
' "totalobjects": "2"' +
'}';
procedure ConsumeJsonString;
var
LJSONObject: TJSONObject; begin
LJSONObject := nil;
try
{ convert String to JSON }
LJSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(GJSONString), 0) as TJSONObject;
{这个好好看清楚,我们以后需要依葫芦画瓢}
{ output the JSON to console as String }
Writeln(LJSONObject.ToString);
finally
LJSONObject.Free;
end;
{使用parse的code snippet}
procedure ConsumeJsonBytes;
var
LJSONObject: TJSONObject;
begin
LJSONObject := nil;
try
LJSONObject := TJsonObject.Create;
{ convert String to JSON }
LJSONObject.Parse(BytesOf(GJSONString), 0);
{ output the JSON to console as String }
Writeln(LJSONObject.ToString);
finally
LJSONObject.Free;
end;
end;
上面的输出结果一样,
{"name":{"A JSON Object":{"id":"1"},"Another JSON Object":{"id":"2"}},"totalobjects":"2"}
在JSON生命周期中,父对象拥有它所包含的任何值,除非将所属属性设置为False。在本例中,JSON对象的销毁跳过了将标记设置为False的每个成员。该特性允许将各种对象组合成更大的对象,同时保留所有权。默认情况下,属性为True,这意味着所有包含的实例都由它们的父实例拥有。
可以克隆所有JSON类型。克隆操作是一个深度克隆。克隆的对象将拥有所有的JSON实例。
服务器方法接受所有JSON类型作为输入、输出或返回参数,但它们不拥有任何JSON类型。在服务器方法执行后释放JSON实例。可以读取JSON对象并对内容作出反应,但如果需要进一步存储,则必须克隆该对象。
JSON Objects Framework(1)的更多相关文章
- Django rest framework(7)----分页
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django rest framework(6)----序列化
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django rest framework(5)----解析器
目录 Django rest framework(1)----认证 Django rest framework(2)----权限 Django rest framework(3)----节流 Djan ...
- Django rest framework(4)----版本
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django res ...
- Django rest framework(3)----节流
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django res ...
- Django rest framework(1)----认证
目录 Django组件库之(一) APIView源码 Django restframework (1) ----认证 Django rest framework(2)----权限 Django ...
- LINQ之路10:LINQ to SQL 和 Entity Framework(下)
在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术 ...
- LINQ之路 9:LINQ to SQL 和 Entity Framework(上)
在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...
- 10分钟了解JSON Web令牌(JWT)
JSON Web Token(JWT)是目前最流行的跨域身份验证解决方案.虫虫今天给大家介绍JWT的原理和用法. 1.跨域身份验证 Internet服务无法与用户身份验证分开.一般过程如下. 1.用户 ...
- JSON WEB TOKEN(JWT)的分析
JSON WEB TOKEN(JWT)的分析 一般情况下,客户的会话数据会存在文件中,或者引入redis来存储,实现session的管理,但是这样操作会存在一些问题,使用文件来存储的时候,在多台机器上 ...
随机推荐
- 一个小的图文编辑软件 -- 采用winform开发
本人用winform开发了一款图文编辑软件,实现了图片.文字.图形混合排版; 可以对图元调整大小.设置角度.添加剪切区间等操作.本人以前也写过一款类似的软件<WinForm版图像编辑小程序> ...
- IT系统架构的演化-copy
前言 一个成熟的大型网站(如淘宝.天猫.腾讯等)的系统架构并不是一开始设计时就具备完整的高性能.高可用.高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术 ...
- mxGraph绘制机构图
简单介绍一下使用的依赖: JGraphX package JGraphX is a Java Swing diagramming (graph visualisation) library lic ...
- JS获取字符串长度的常用方法,汉字算两个字节
JS获取字符串实际长度(双字节字符.汉字算两个字符) //第一种 GetLength = function(str) { var realLength = 0; for (var i = 0; i & ...
- MongoDB 常用指令(详细)
# MongoDB 常用指令## 基础命令### 启动与连接```bash# 启动 MongoDB 服务mongod# 连接 MongoDB 客户端mongo```### 数据库操作```bash# ...
- Vite构建项目记录
背景 微信推送了一些公众号文章,所 vite 已经跟新到 v6 版本了,于是构建一个 vite 项目看下啥变化 过程 直接打开 https://vite.dev/ 官网,切换问中文语言,找到此处 ht ...
- ef 值转换与值比较器
前言 简单介绍一下,值转换器和值比较器. 正文 为什么有值转换器这东西呢? 那就是这个东西一直必须存在. 比如说,我们的c# enum 对应数据库的什么呢? 是int还是string呢? 一般情况下, ...
- 天翼云边缘安全加速平台亮相2023亚太内容分发大会暨CDN峰会
6月29日,第十二届亚太内容分发大会暨CDN峰会在北京召开.大会聚集了行业领/袖.专家和学者,深度探讨CDN的技术发展.应用与未来发展趋势,会上还公布了2023边缘加速创新企业榜单,中国电信天翼云成功 ...
- [记录点滴] 使用工具和命令对redis数据进行备份恢复
[记录点滴] 使用工具和命令对redis数据进行备份恢复 0x00 摘要 本文记录了如何使用工具对redis数据进行恢复备份,涉及的有Redis-Dump,MySQL,Redis管道命令. 0x01 ...
- JVM堆内存分析,分析工具jmap heap
一.查看堆信息 jmap -heap 33146 Debugger attached successfully. Server compiler detected. JVM version is 25 ...