kbmmw 中JSON 操作入门
现在各种系统中JSON 用的越来越多。delphi 也自身支持JSON 处理。
今天简要说一下kbmmw 内部如何使用和操作JSON。
kbmmw 中json的操作是以TkbmMWJSONStreamer 为基础,要导入、导出JSON字符串, 首先要创建TkbmMWJSONStreamer.
然后是 TkbmMWJSONObject和 TkbmMWJSONArray。
先举一个最简单的例子。
procedure TForm1.Button3Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
s:String;
begin myjson:=TkbmMWJSONStreamer.Create; // 建立JSON流 alljson:=TkbmMWJSONObject.Create; // 建立JSON 对象 alljson.AsString['root']:='ok'; // 赋值 s:=myjson.SaveToUTF16String(alljson);
memo1.Lines.Clear;
memo1.Lines.Add(s); alljson.Free;
myjson.Free;
end;
以上代码运行结果为
{"root":"ok"}
继续修改添加一些代码
procedure TForm1.Button3Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
djson:TkbmMWJSONObject;
s:String;
begin myjson:=TkbmMWJSONStreamer.Create; alljson:=TkbmMWJSONObject.Create; djson:=TkbmMWJSONObject.Create; // 新建一个子对象 djson.Asinteger['ID']:=;
djson.AsString['name']:='xalion';
djson.AsDateTime['date']:=now; alljson.AsObject['result']:=djson; s:=myjson.SaveToUTF16String(alljson);
memo1.Lines.Clear;
memo1.Lines.Add(s); alljson.Free;
myjson.Free; end;
这样返回的结果如下
{"result":{"ID":1,"name":"xalion","date":"2017-07-01T01:00:00.427+08:00"}}
即返回一条记录信息。
如果需要返回多条记录,就需要使用TkbmMWJSONArray。
procedure TForm1.Button3Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
djson:TkbmMWJSONObject;
datajson: TkbmMWJSONArray;
s:String;
I: Integer;
begin myjson:=TkbmMWJSONStreamer.Create; // 建立一个JSON 流 alljson:=TkbmMWJSONObject.Create; // 建立一个JOSN 根对象 datajson:=TkbmMWJSONArray.Create; //建立一个JSON 数组 for I := to do
begin
djson:=TkbmMWJSONObject.Create;
djson.Asinteger['ID']:=i;
djson.AsString['name']:='xalion';
djson.AsDateTime['date']:=now; datajson.Add(djson); // 加入数据 end; alljson.AsArray['result']:=datajson; s:=myjson.SaveToUTF16String(alljson);
memo1.Lines.Clear;
memo1.Lines.Add(s); alljson.Free;
myjson.Free; end;
最后输出结果为
{"result":[{"ID":1,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":2,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":3,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":4,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":5,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":6,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":7,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":8,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":9,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"},{"ID":10,"name":"xalion","date":"2017-07-01T01:16:44.960+08:00"}]}
下面讲一下如何访问JSON字符串里面的对象和值
procedure TForm1.Button4Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
begin
myjson:=TkbmMWJSONStreamer.Create; // 建立一个JSON 流 alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 载入到根JSON memo2.Lines.Clear; memo2.Lines.Add(alljson.AsString['root']); alljson.Free;
myjson.Free; end;
运行截图

访问对象
procedure TForm1.Button4Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
begin
myjson:=TkbmMWJSONStreamer.Create; // 建立一个JSON 流 alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 载入到根JSON memo2.Lines.Clear; memo2.Lines.Add(alljson.AsObject['result'].AsString['name'] ); alljson.Free;
myjson.Free; end;
运行结果

访问数组
procedure TForm1.Button4Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
jresult:TkbmMWJSONArray;
begin
myjson:=TkbmMWJSONStreamer.Create; // 建立一个JSON 流 alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 载入到根JSON memo2.Lines.Clear; jresult:=TkbmMWJSONArray(alljson.AsArray['result']); // 返回数组 memo2.Lines.Add(jresult.AsObject[].AsString['name'] ); alljson.Free;
myjson.Free; end;
运行结果

延伸一下
procedure TForm1.Button4Click(Sender: TObject);
var
myjson:TkbmMWJSONStreamer;
alljson: TkbmMWJSONObject;
jresult:TkbmMWJSONArray;
i:integer;
begin
myjson:=TkbmMWJSONStreamer.Create; // 建立一个JSON 流 alljson:=TkbmMWJSONObject( myjson.LoadFromUTF16String(memo1.Lines.Text)); // 载入到根JSON memo2.Lines.Clear; jresult:=TkbmMWJSONArray(alljson.AsArray['result']); // 返回数组 memo2.Lines.Add(jresult.AsObject[].AsString['name'] ); memo2.lines.Add('数组大小:'+jresult.Count.ToString );
memo2.lines.Add('属性个数:'+jresult.AsObject[].PropertyCount.ToString ); for I := to jresult.AsObject[].PropertyCount do memo2.lines.Add('属性'+i.ToString+'名:'+jresult.AsObject[].PropertyName[i-]); alljson.Free;
myjson.Free; end;
运行结果

总之,用kbmmw 操作JSON 非常方便,更牛的是,这个可以与XML,BSON,YAML 实现无缝互转。
kbmmw 中JSON 操作入门的更多相关文章
- kbmmw 中XML 操作入门(跨平台,而且可以与JSON,YAML,BSON 直接互相转换)
delphi 很早以前就自带了xml 的操作,最新版里面有三种XML 解释器,一种是MSXML,看名字就知道 这个是微软自带的,这个据delphi 官方称是速度是最快的,但是只能在windows 上使 ...
- kbmmw 中XML 操作入门
delphi 很早以前就自带了xml 的操作,最新版里面有三种XML 解释器,一种是MSXML,看名字就知道 这个是微软自带的,这个据delphi 官方称是速度是最快的,但是只能在windows 上使 ...
- kbmmw 中JSON 中使用SQL 查询
前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值.也就是说 ...
- jquery中Json操作
在开发中,我们有可能拿到的不是全的json,而是一部分json格式的数据,这个时候我们需要将其强转为json对象 第一种方法:使用jquery中的$.parseJSON(),但是它对json数据格式的 ...
- python中json操作
1.写操作.json文件dumps().dump()函数 d = { 'zll': { 'addr': '北京', 'age': 28 }, 'ljj': { 'addr': '北京', 'age': ...
- python中json操作了解
什么是接口? 交换数据 http://openweathermap.org/current json简介 JSON 是存储和交换文本信息的语法.类似 XML JSON 语法是 JavaScript 语 ...
- kbmmw 中虚拟文件操作入门
kbmmw 中一直有一个功能,但是基本上都没有提过,但是在实际应用中,却非常有用,这个功能就是 虚拟文件包功能,他可以把一大堆文件保存到一个文件里面,方便后台管理. kbmmw 的虚拟文件在单元kbm ...
- js中如何操作json数据
一.要想熟练的操作json数据,就先要了解json数据的结构,json有两种结构:对象和数组. 1.对象 一个对象以“{”开始,“}”结束.每个“名称”后跟一个“:”:“‘名称/值’ 对”之间使用“, ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
随机推荐
- 合并两个排序的链表(python)
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. # -*- coding:utf-8 -*- # class ListNode: # def _ ...
- NoHtml
private string NoHtml(string Htmlstring) { if (string.IsNullOrWhiteSpace(Htmlstring)) return string. ...
- checkbox控制text是否可以填写和radio是否可选
代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" con ...
- swift - self的弱引用
1. weak var weakSelf = self 2. DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {[weak se ...
- 关于Laravel框架
第1讲-Laravel介绍 1.1 什么是Laravel laravel是目前一个比较主流的框架,现在很多互联网的公司都在使用该框架.该框架的前身是symfony框架 Laravel的定位就是做一个简 ...
- git log的用法
git log 查看 提交历史默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面. git log --graph --pretty=format:'%Cred%h ...
- cell设置背景颜色为啥不起作用
利用poi设置背景颜色时,应如下配置, CellStyle cell=workbook.createCellStyle(); cell.setFillForegroundColor(IndexedCo ...
- mysql5.7 生成列 generated column
生成列的值是根据列定义中的表达式计算得出的. mysql5.7支持两种类型的生成列: 1.virtual 生成列:当从表中读取记录时,才计算该列值.不会把数据持久化在硬盘上. 2.stored 生成列 ...
- 整站变灰CSS代码
* { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); -webkit-filter: grayscale(100% ...
- 关于控制反转(IOC)容器 ,依赖注入(DI)模式必读文章收集
推荐一篇国外設計大師Martin Fowler的大作:Inversion of Control Containers and the Dependency Injection pattern http ...