DelphiでTJSONObjectクラスを使ってJSONデータを扱う

比較的最近増えたクラスなのかな。Delphi XE3でJSONデータを扱うにはusesにData.DBXPlatformとData.DBXJSONを追加して、TJSONObjectクラスを使えばいいらしい。

json_test.dpr

program json_test;                                                                                                                                                                             

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Data.DBXPlatform,
  Data.DBXJSON;

var
  Data1, Data2: TJSONObject;
  Pair: TJSONPair;

begin
  try
    Data1 := TJSONObject.Create;
    Data2 := TJSONObject.ParseJSONValue('{"ほげ": "ふが", "ぴよ": 123}') as TJSONObject;
    try
      Data1.AddPair('Hello', 'こんにちは');
      WriteLn(Data1.ToString);
      for Pair in Data2 do
        WriteLn(Pair.JsonString.Value + ' = ' + Pair.JsonValue.Value);
    finally
      Data1.Free;
      Data2.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

実行結果

Win32, Win64, OSXで動作確認。

$ ./json_test 
{"Hello":"こんにちは"}
ほげ = ふが
ぴよ = 123