XE5 JSON与Delphi Object的互换
来源:互联网 发布:淘宝店加盟是真的吗 编辑:程序博客网 时间:2024/06/06 04:03
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.