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.

原创粉丝点击