:Windows 7のコンパイラ、ソースコードのダウンロードのためのデルファイ10.3.2
東京10.2新しいクラス、より効率的かつ迅速に
TJsonSerializer
ユニットを参照する必要があります。System.JSON.Serializers
ユニットuMain; インタフェースは 使用 Winapi.Windows、Winapi.Messages、System.SysUtils、System.Variants、 System.Classes、Vcl.Graphics、Vcl.Controls、Vcl.Forms、Vcl.Dialogs、 、Vcl.ComCtrls、Vcl.StdCtrls、Vcl.ExtCtrlsをVcl.Samples.Spin、Vcl.Buttons。 入力 TObj1 = クラス プライベート F_iとを:整数; F_D:TDateTimeで。 F_S:文字列; // F_A:TARRAY <文字列>。 パブリック コンストラクタが 作成します。 公表 プロパティ field_s:文字列が 読み F_Sが書き込みF_Sを。 プロパティfield_i:整数読ん F_iとは、書き込みF_iとします。 プロパティ field_d:TDateTimeのは読み F_D 書き込みF_Dを。 // プロパティfield_a:TARRAY <文字列> F_A書き込みF_Aを読みます。 エンド; TfrmJSONText = クラス(TFormは) BTN1:のTButton。 mmolog:TMemoオブジェクト。 SpeedButton1:TSpeedButton。 seTestNumber:TSpinEdit。 LBL1:TLabel; 手順FormCreate(送信者:TObjectを); 手順btn1Click(送信者:TObjectを); 手順ログ(のconst S:文字列); プライベート { プライベート宣言} 公共 { 公開宣言} エンド。 VaRの frmJSONText:TfrmJSONText。 TestNumber:整数; 実装が 使用 たSystem.Diagnosticsを { $ IF COMPILERVERSION> 31.0 } 、System.JSON.Serializers、System.JSON.Types { $ ENDIF } 。 { $のR * .DFM } 手順TfrmJSONText.btn1Click(送信者:TObjectを)。 { $ IF COMPILERVERSION> 31.0 } のvar はFoo:TObj1。 I:整数; SW:TStopwatch。 AJson:文字列; シリアライザ:TJsonSerializer。 { $ ENDIFは} 開始 { $ IF COMPILERVERSION> 31.0 } TestNumber: = seTestNumber.Value。 SW: = TStopwatch.StartNew。 シリアライザ: = TJsonSerializer。作成します。 試す Serializer.DateTimeZoneHandling: = TJsonDateTimeZoneHandling.Utc。 用 I:= 0 へ - TestNumber 1 か 開始 :フー = TObj1を。作成します。 試す Foo.field_s: = ' Hello Worldの' ; Foo.field_i: = 42 ; Foo.field_d: = 今; AJson: = Serializer.Serialize <TObj1> (フー)。 最後に Foo.Free; エンド; エンド; ログ(' TJsonSerializer.Serialize:' + sw.ElapsedMilliseconds.ToString + ' ミリ秒' + AJson)。 SW: = TStopwatch.StartNew。 用 I:= 1 に TestNumber -1 か 開始 FOO: = Serializer.Deserialize <TObj1> (AJson)。 試す 最後に Foo.Free。 エンド; エンド; ログ(' TJsonSerializer.Deserialize:' + sw.ElapsedMilliseconds.ToString + ' MS ' ); 最後に FreeAndNil (シリアライザ)。 エンド; ログ(' ======================= ' ); { $ ENDIF } 端; 手順TfrmJSONText.FormCreate(送信者:TObjectを); const // D2010〜D10.3 DelphiIDEVers:配列 [ 21 .. 33 ] の 文字列 =(' デルファイ2010 '、' デルファイXE '、' デルファイXE2 '、' デルファイXE3 '、' デルファイXE4 '、' デルファイXE5 '、' デルファイXE6 '、' デルファイXE7 '、' デルファイXE8 '、' デルファイ10シアトル'、' デルファイ10.1ベルリン'、' デルファイ10.2東京'、' デルファイ10.3リオ' ); 開始 { $ IFDEF WIN64 } キャプション: =キャプション+ ' (64ビット)' 。 { $ ENDIF } { $ IFDEF WIN32 } キャプション: =キャプション+ ' (32ビット)' 。 { $ ENDIF } キャプション: =キャプション+ ' - ' + DelphiIDEVers [TRUNC(COMPILERVERSION)]。 {$ IF COMPILERVERSION <32.0 } // 版本小于デルファイ10.2、ボタンが有効偽 btn1.Enabled:= falseは、 { $ ENDIF } 端; 手順 TfrmJSONText.Log(のconst S:文字列); 開始 mmoLog.Lines.Add(S)を。 エンド; { TObj1 } コンストラクタ TObj1。作成します。 始める 継承されました。 エンド; 終わり。