delphi 7 json 做个笔记,留着以后用

--源码

unit Umain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
mmo1: TMemo;
mmo2: TMemo;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
str: string;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

uses uLkJSON;

procedure TForm1.Button1Click(Sender: TObject);
var
js: TlkJSONobject;
temp: string;
begin
// js := TlkJSONobject.Create();
// js.Add('name', '张三');
// js.Add('sex', '男');
// js.Add('age', '20');
str := '{"name":"张三","sex":"男","age":"20","data":[{"abc":"16.346","def":"3223.32"}]}';

// str := TlkJSON.GenerateText(js);
mmo1.Text := str;
//FreeAndNil(js);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
js: TlkJSONobject;
i: Integer;
begin
js := TlkJSON.ParseText(mmo1.Text) as TlkJSONobject;
//mmo2.Lines.Add(js.getString('name'));
//mmo2.Lines.Add(js.getString('sex'));
// mmo2.Lines.Add(js.getString('age'));

for i := 0 to js.Count - 1 do
begin
mmo2.Lines.Add(js.getString(i));
end;

end;

procedure TForm1.Button3Click(Sender: TObject);
var
js: TlkJSONobject;
i, j, k: Integer;
jsRow: TlkJSONlist;
jsCol: TlkJSONobject;
jsField: TlkJSONobject;
begin
js := TlkJSON.ParseText(mmo1.Text) as TlkJSONobject;
for i := 0 to js.Count - 1 do
begin
if js.FieldByIndex[i] is TlkJSONlist then
begin
jsRow := js.FieldByIndex[i] as TlkJSONlist;

for j := 0 to jsRow.Count-1 do
begin
jsCol:= jsRow.Child[j] as TlkJSONobject;

for k := 0 to jsCol.Count-1 do
begin
mmo2.Lines.Add( jsCol.NameOf[k]+'+++'+jsCol.getString(k));
end;
end;
end
else
begin
mmo2.Lines.Add( js.NameOf[i]+'==='+ js.getString(i));
end;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
js,jscol:TlkJSONobject;
i,j,k:Integer;
jsrow:TlkJSONlist;
begin
Button1.Click;

js:= TlkJSON.ParseText(mmo1.Text) as TlkJSONobject;

for i := 0 to js.Count-1 do
begin
if js.FieldByIndex[i] is TlkJSONlist then
begin
jsrow:=js.FieldByIndex[i] as TlkJSONlist ;

for j :=0 to jsrow.Count-1 do
begin

jscol:= jsrow.Child[j] as TlkJSONobject;

for k := 0 to jscol.Count-1 do
begin
mmo2.Lines.Add(jscol.NameOf[K] +':==:' + jscol.getString(k));
end;
end;
end
else
begin
mmo2.Lines.Add(js.NameOf[i] +':' + js.getString(i));
end;
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
js,jstemp: TlkJSONobject;
jslist:TlkJSONlist;
temp: string;
begin
js := TlkJSONobject.Create();
jstemp:=TlkJSONobject.Create();
jstemp.Add('desf','16.346');
jstemp.Add('abc','13223.32');

jslist:=TlkJSONlist.Create;
jslist.Add(jstemp);

js.Add('name', '张三');
js.Add('sex', '男');
js.Add('age', '20');
js.Add('data',jslist);

// ATickerList := '[{' + ATickerList + '}]';

// ATickerList := '[{' + ATickerList + '}]';
//js.Add('data','[{' + '}]' );

//str := '{"name":"张三","sex":"男","age":"20","data":[{"acbd":"16.346","def":"3223.32"}]}';

str := TlkJSON.GenerateText(js);
mmo1.Text := str;
FreeAndNil(js);

end;

procedure TForm1.Button6Click(Sender: TObject);
var
jsM:TlkJSONstreamed;
js:TlkJSONobject;
begin
js:=TlkJSONobject.Create;
jsM:=TlkJSONstreamed.Create;
js.Add('name','张三');
js.Add('age','20');
js.Add('sex','男');

jsM.SaveToFile(js,'c:\1.txt');

end;

procedure TForm1.Button7Click(Sender: TObject);
var
jsM:TlkJSONstreamed;
js:TlkJSONobject;
i:Integer;
begin
jsM:=TlkJSONstreamed.Create;
js:= jsm.LoadFromFile('c:\1.txt') as TlkJSONobject;

for i := 0 to js.Count-1 do
begin
mmo2.Lines.Add( js.NameOf[i]+'=='+ js.getString(i) );

end;
end;

end.

--窗体文件

object Form1: TForm1
Left = 213
Top = 226
Width = 620
Height = 563
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 256
Top = 32
Width = 75
Height = 25
Caption = '加入json'
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 256
Top = 80
Width = 75
Height = 25
Caption = '解析json'
TabOrder = 1
OnClick = Button2Click
end
object mmo1: TMemo
Left = 8
Top = 24
Width = 233
Height = 337
ScrollBars = ssBoth
TabOrder = 2
end
object mmo2: TMemo
Left = 344
Top = 24
Width = 233
Height = 337
ScrollBars = ssBoth
TabOrder = 3
end
object Button3: TButton
Left = 256
Top = 120
Width = 75
Height = 25
Caption = '解析2'
TabOrder = 4
OnClick = Button3Click
end
object Button4: TButton
Left = 256
Top = 168
Width = 75
Height = 25
Caption = '解析3'
TabOrder = 5
OnClick = Button4Click
end
object Button5: TButton
Left = 256
Top = 216
Width = 75
Height = 25
Caption = 'Button5'
TabOrder = 6
OnClick = Button5Click
end
object Button6: TButton
Left = 248
Top = 272
Width = 75
Height = 25
Caption = '保存到文件'
TabOrder = 7
OnClick = Button6Click
end
object Button7: TButton
Left = 256
Top = 312
Width = 75
Height = 25
Caption = 'Button7'
TabOrder = 8
OnClick = Button7Click
end
end

delphi json uLkJSON的更多相关文章

  1. delphi json(CDS包含了Delta数据包)

    在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包 ...

  2. Delphi json解析相关

    身为一个资深的Delphi 开发者, 最近在做一个小工具的时候,开始捡起来pascal语言. 主要是开发一个内部用的小工具, 主要功能: 1.解析json格式 2.格式化json文件 3.校验json ...

  3. delphi json用法

    用法:uses Superobject, Sperjsondelphi里有json单元. procedure TForm2.SuperObjectClick(Sender: TObject); var ...

  4. Delphi Json

    superobject.pas单元对json的解析非常方便, 力荐 下面演示对如下json的解析 { ", "memo": "S.H.E 004" } ...

  5. Delphi Json之树遍历

    procedure TForm1.VisitDirJsonTree(const AJsonObj: ISuperObject); var i: Integer; oItem: TSuperAvlEnt ...

  6. delphi c++builder JSON 生成与解析 例子

    json,System.JSON,REST.JSON JSON有两种数据结构,对象和数组. 对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...} 数组 ...

  7. 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码

    <span style="font-size:14px;">一直想找如何解析JSON数据的说,今天终于找到有人发帖子了.之前有人说用superobject,Tlkjso ...

  8. Delphi XE6 原生解析json

    Delphi XE5带了system.json单元,原生提供了json支持类.下面是解析json用法说明: 最简单的JSON大致像这样 { "date":"周二(今天, ...

  9. 转(Delphi 新窑洞):使用delphi 开发多层应用(十七)使用RTC web 服务器返回JSON

    RTC作为delphi 的最专业的web 应用服务器,如果客户端要使用JSON 的话,那么使用RTC 应该也是一种 非常好的选择.下面我们做一个使用RTC web 服务器返回数据库JSON 的例子. ...

随机推荐

  1. 如何在Win8/Win10上开启 dotNetFramework 2.0/3.5 功能

    问题: 在Windows 8.Windows 10上安装一些软件时,系统可能会报出如下错误:你的电脑上的应用需要使用以下Windows功能:     解决方式:   首先呢,你需要准备好一个Win8/ ...

  2. 【习题 5-14 UVA - 1598】Exchange

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 各组数据之间有空行! 且最后一行后面没有空行! 然后就是用set来模拟就好. 删除的时候,不着急删除. 因为并不用时刻输出集合大小. ...

  3. 三国武将查询系统 //Java 訪问 数据库

    import java.awt.*; import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event ...

  4. MongoDB 管理

    1.给数据库增加分片功能 mongos> use admin mongos> db.runCommand({enablesharding:"cipnet"}) mong ...

  5. 13、虚拟驱动vivi.c注册过程分析及怎么写V4L2驱动及启动过程

    UVC设备也是一个usb设备,在uvc_driver.c中的init函数会调用usb_register注册,根据id_table发送可支持的设备后调用probe函数,其会去uvc_register_c ...

  6. 如何在移动web模仿客户端给input输入框添加自定义清除按钮

    项目有个需求就是在input输入框添加清除按钮,网上查找资料加上自己琢磨终于弄出来了. 灵感来自于 http://www.zhangxinxu.com/wordpress/?p=4077 由于项目已经 ...

  7. 单选框radio改变事件详解(用的jquery的radio的change事件)

    单选框radio改变事件详解(用的jquery的radio的change事件) 一.总结 1.用的jquery的radio的change事件:当元素的值发生改变时,会发生 change 事件,radi ...

  8. [E2E] Robot Framework introduction

    We will use demo project as an example, go though QuickStart repo. Install: First you should have py ...

  9. php函数实现显示几秒前,几分钟前,几天前等方法(网络上什么都有)

    php函数实现显示几秒前,几分钟前,几天前等方法(网络上什么都有) 一.总结 网络上面什么函数都有 二.php函数实现显示几秒前,几分钟前,几天前等方法 现在很多网站的时间显示都很人性化,不再是单纯的 ...

  10. Gibbs 采样的应用

    Gibbs 采样的最大作用在于使得对高维连续概率分布的抽样由复杂变得简单. 可能的应用: 计算高维连续概率分布函数的数学期望, Gibbs 采样得到 n 个值,再取均值: 比如用于 RBM: