博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kbmmw 中JSON 操作入门
阅读量:4512 次
发布时间:2019-06-08

本文共 4824 字,大约阅读时间需要 16 分钟。

现在各种系统中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']:=1;   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 :=1 to 10 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[5].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[5].AsString['name'] );    memo2.lines.Add('数组大小:'+jresult.Count.ToString  );    memo2.lines.Add('属性个数:'+jresult.AsObject[5].PropertyCount.ToString  );    for I := 1 to jresult.AsObject[5].PropertyCount do          memo2.lines.Add('属性'+i.ToString+'名:'+jresult.AsObject[5].PropertyName[i-1]);    alljson.Free;    myjson.Free;end;

运行结果

总之,用kbmmw 操作JSON 非常方便,更牛的是,这个可以与XML,BSON,YAML 实现无缝互转。

 

转载于:https://www.cnblogs.com/xalion/p/7100177.html

你可能感兴趣的文章
org.apache.catalina.LifecycleException异常的处理
查看>>
C++转向C#的疑惑:难道C#中没有拷贝构造函数 ?[转]
查看>>
计算一个整数二进制中1的个数
查看>>
netdom join 错误:指定的域不存在,或无法联系。
查看>>
Android中Dialog的使用
查看>>
12/10/2015 校内测试:数列
查看>>
Android Activity接收Service发送的广播
查看>>
[Leetcode] Spiral Matrix | 把一个2D matrix用螺旋方式打印
查看>>
加速和监控国际网络
查看>>
亲历亚马逊、华为机器学习面试,原来考官想听到这些回答[转]
查看>>
【Flex】读取本地XML,然后XML数据转成JSON数据
查看>>
RecyclerView使用StaggeredGridLayoutManager布局的粘性头部实现
查看>>
Android 优雅的让Fragment监听返回键
查看>>
Android 数据库框架总结,总有一个适合你!
查看>>
Android 设置 横屏 竖屏
查看>>
Spring MVC兑现QQ第三方登录
查看>>
R类型5 R语言 数据帧
查看>>
百度云推送教程
查看>>
简单几步轻松实现在微信中直接下载APK
查看>>
python基础(六)
查看>>