delphi – 如何跳过DataSnap中JSON编组的字段序列化?
发布时间:2020-12-15 04:07:54 所属栏目:大数据 来源:网络整理
导读:在Delphi XE2 DataSnap中,是否有通用的方法来跳过 JSON编组中的字段序列化? TBizObjects = class DataObject: TDataObject; -- skip this field on serializaing descendantsend;Model = class(TBizObject); 解决方法 解决方案非常简单但非常隐蔽.对于不希
在Delphi XE2 DataSnap中,是否有通用的方法来跳过
JSON编组中的字段序列化?
TBizObjects = class DataObject: TDataObject; -- skip this field on serializaing descendants end; Model = class(TBizObject); 解决方法
解决方案非常简单但非常隐蔽.对于不希望序列化或反序列化的字段,应将
JSONMarshalled 类属性设置为False.
假设您已声明要编组的以下类: type TPerson = class private FName: string; FSurname: string; FHeight: Integer; public constructor Create; destructor Destroy; override; end; 在此声明中,只有FName和FHeight将被序列化和反序列化,FSurname将被省略: type TPerson = class private FName: string; [JSONMarshalled(False)] FSurname: string; FHeight: Integer; public constructor Create; destructor Destroy; override; end; 在这里你可以使用一些代码: unit Unit1; interface uses Winapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,Vcl.Controls,Vcl.Forms,Vcl.Dialogs,Vcl.StdCtrls,Data.DBXJSON,Data.DBXJSONReflect; type TPerson = class private FName: string; // try to comment and uncomment the following line and see the result [JSONMarshalled(False)] FSurname: string; FHeight: Integer; end; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var Person: TPerson; JSONString: string; JSONMarshal: TJSONMarshal; JSONUnMarshal: TJSONUnMarshal; begin JSONMarshal := TJSONMarshal.Create(TJSONConverter.Create); try Person := TPerson.Create; try Person.FName := 'Petra'; Person.FSurname := 'Kvitova'; Person.FHeight := 183; JSONString := JSONMarshal.Marshal(Person).ToString; Memo1.Text := JSONString; finally FreeAndNil(Person); end; finally JSONMarshal.Free; end; JSONUnMarshal := TJSONUnMarshal.Create; try Person := JSONUnMarshal.Unmarshal(TJSONObject.ParseJSONValue(JSONString)) as TPerson; try ShowMessage( 'Name: ' + Person.FName + sLineBreak + 'Surname: ' + Person.FSurname + sLineBreak + 'Height: ' + IntToStr(Person.FHeight) + ' cm' ); finally Person.Free; end; finally JSONUnMarshal.Free; end; end; end. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |