delphi XE5 JSON与Delphi Object的互换
来源:互联网 发布:网络销售红酒技巧 编辑:程序博客网 时间:2024/05/21 19:43
unit Unit2;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
DBXJSON, DBXJSONReflect;
type
TPerson = class(TObject)
public
Name: String;
Password: String;
Age: Integer;
end;
TForm2 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
function ObjectToJSON(AData: TObject): TJSONValue;
function JSONToObject(AJSONValue: TJSONValue): TObject;
public
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
function TForm2.JSONToObject(AJSONValue: TJSONValue): TObject;
var
lUnMarshal: TJSONUnMarshal;
begin
lUnMarshal := TJSONUnMarshal.Create();
try
Result := lUnMarshal.Unmarshal(AJSONValue);
finally
FreeAndNil(lUnMarshal);
end;
end;
function TForm2.ObjectToJSON(AData: TObject): TJSONValue;
var
lMarshal: TJSONMarshal;
begin
lMarshal := TJSONMarshal.Create();
try
Result := lMarshal.Marshal(AData);
finally
FreeAndNil(lMarshal);
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
lPerson: TPerson;
lJSONValue: TJSONValue;
const
lJSONString: String = '{"type":"Unit2.TPerson","id":1,"fields":{"Name":"Hezihang","Password":"123","Age":23}}';
begin
Memo1.Lines.Clear;
/// Object Convert to JSON
Memo1.Lines.Add('Object to JSON String');
Memo1.Lines.Add('--------------------------------------');
Memo1.Lines.Add('');
lPerson := TPerson.Create;
lPerson.Name := 'Hezihang';
lPerson.Password := '123';
lPerson.Age := 23;
lJSONValue := ObjectToJSON(lPerson);
FreeAndNil(lPerson);
Memo1.Lines.Add(lJSONValue.ToString);
lJSONValue.Free;
Memo1.Lines.Add('');
Memo1.Lines.Add('--------------------------------------');
/// JSON Convert to Object
Memo1.Lines.Add('');
Memo1.Lines.Add('JSON String'' To a Class Instance''');
Memo1.Lines.Add('--------------------------------------');
Memo1.Lines.Add('');
lJSONValue := TJSONObject.ParseJSONValue(lJSONString);
lPerson := JSONToObject(lJSONValue) as TPerson;
lJSONValue.Free;
Memo1.Lines.Add('Name: ' + lPerson.Name);
Memo1.Lines.Add('Password: ' + lPerson.Password);
Memo1.Lines.Add('Age: ' + IntToStr(lPerson.Age));
lPerson.Free;
Memo1.Lines.Add('');
Memo1.Lines.Add('--------------------------------------');
end;
end.
0 0
- XE5 JSON与Delphi Object的互换
- XE5 JSON与Delphi Object的互换 .
- XE5 JSON与Delphi Object的互换
- delphi XE5 JSON与Delphi Object的互换
- delphi XE5
- Delphi XE5 的开发团队
- Delphi xe5 StyleBook的用法(待续)
- Delphi XE5的Android开发平台搭建
- Delphi XE5 android 黑屏的临时解决办法
- 如何让Delphi XE5跟其他版本的Delphi共存?
- 如何解析DELPHI XE5服务器返回的JSON数据(翻译)及中文乱码
- delphi xe5 破解
- delphi XE5 调试DLL
- DELPhI XE5 控件
- Delphi Reference XE5
- DELPHI XE5 控件
- delphi xe5 安装 fastreport5
- Delphi 与 JSON
- 好东西分享:每个人都可以拥有一款属于自己的 jsFiddle,开源在线运行代码编辑器 Tiny-editor 为您解开闭源的限制!
- 蓝桥杯 基础练习 特殊回文数
- 研发人员岗位特点
- HDFS客户端的权限错误:Permission denied
- python基本文件操作
- delphi XE5 JSON与Delphi Object的互换
- 搭建 Linux 下 GitLab 服务器
- Myeclipse下web项目改名
- 蓝桥杯 基础练习 十进制转十六进制
- 360浏览器调试前端小技巧
- 自己遇到的有关Genymotion使用中遇到的一些问题及解决方式
- 蓝桥杯 基础练习 十六进制转十进制
- HTML编码规范
- 蓝桥杯 基础练习 数列排序