人気ブログランキング |
カテゴリ:Delphi( 1 )

Delphi で JSON のデータを作成する。

Delphi 10.3で作っているソフトのToDolistにリマインダー機能を追加しようと思って
設定ファイルをiniファイルからJSON形式に変更することを決めて今日一日中格闘してた。

Delphi で JSON のデータを作成する。_b0003577_19580984.png

作成しようとしていたJSONデータは以下のような物です。
最初のFormはウィンドウサイズやウィンドウの位置を示していて、次のLoopListがリマインダー機能の設定データ群。

{
   "Form":{
      "Top":"524",
      "Left":"1339",
      "WindowWidth":"551",
      "WindowHeight":"478"
   },
   "LoopList":[
      {
         "ID":"001",
         "GruopID":"0",
         "Item":"田中太郎さんとミーティング",
         "Day":"2日",
         "Time":"12:00",
         "backgroundColor":"White"
      },
      {
         "ID":"002",
         "GruopID":"2",
         "Item":"月刊誌購入",
         "Day":"4日",
         "Time":"14:00",
         "backgroundColor":"White"
      },
      {
         "ID":"004",
         "GruopID":"1",
         "Item":"英会話",
         "Day":"月水金",
         "Time":"19:30",
         "backgroundColor":"White"
      }
   ]
}

uses に「System.JSON」を追加しないとJSONを扱えないので注意です。
フォームにはMemoButtonが1つずつ置きました。

procedure TForm1.Button1Click(Sender: TObject);
var
  JSON, JSON_Form, JSON_LoopList_Node: TJSONObject;
  JSONArray_LoopList: TJSONArray;
  I: Integer;
  number: string;
begin
  JSON := TJSONObject.Create; // 一番大きな箱を作成
  JSON_Form := TJSONObject.Create; // ウィンドウサイズと位置の箱を作成
  JSONArray_LoopList := TJSONArray.Create; // LoopList 全データを入れた箱を作成

  try
    begin
      JSON_Form.AddPair('Top', Form1.Top.ToString);
      JSON_Form.AddPair('Left', Form1.Left.ToString);
      JSON_Form.AddPair('WindowWidth', Form1.Width.ToString);
      JSON_Form.AddPair('WindowHeight', Form1.Height.ToString);
      Memo1.Lines.Add(JSON_Form.ToString);
      Memo1.Lines.Add('----------------');
      JSON.AddPair('Form', JSON_Form);
      JSON.AddPair('LoopList', JSONArray_LoopList);
      for I := 1 to 32 - 1 do  // サンプルデータ作成
      begin
        JSON_LoopList_Node := TJSONObject.Create; // LoopList の1行分のデータの箱を作成、ひとかたまりを作る前にCreateを実行しないと繋がったデータになってしまう。

        number := Format('%.4d', [I]);
        JSON_LoopList_Node.AddPair('ID', number);
        JSON_LoopList_Node.AddPair('GruopID', Random(3).ToString);
        JSON_LoopList_Node.AddPair('Item', 'John Smith');
        JSON_LoopList_Node.AddPair('Day', Random(30).ToString + '日');
        JSON_LoopList_Node.AddPair('Time', '12:00');
        JSON_LoopList_Node.AddPair('backgroundColor', 'White');

        JSONArray_LoopList.Add(JSON_LoopList_Node);

//        Memo1.Lines.Add('-----');
//        Memo1.Lines.Add(JSON.ToString);
      end;

      Memo1.Lines.Add('----------------');
      Memo1.Lines.Add(JSON.ToString);
    end;
  finally
     JSON.Free;
  end;

end;


JSON形式は初めて作ったので正しい書式なのかどうか判定するのにこのサイト:JSON Formatter & Validator を使用しました。

by arigayas | 2020-01-20 19:37 | Delphi | Trackback