LazarusでJsonを扱ってみた

LazarusでJsonを扱ってみた

参考ページ
https://wiki.freepascal.org/fcl-json

ポイント
・jData : TJSONData;
jData := GetJSON(Json文字列);
 で取り込み、パースする
 例:jData.findpath(‘data’)
 データの取り込み時には、型変換(キャスト)する
 例:jData.findpath(‘data’).Items[i].FindPath(‘name’).AsString;
 配列は、Items[n]で、取り込む

プログラム
宣言部

uses
  ,fpjson,jsonparser; //追加

本体

procedure TForm1.FormCreate(Sender: TObject);
begin
  button1.Caption:='分析(エンコード)';
  button1.Width:=150;
  Memo1.Text:='{"data": [{"name":"abc"}, {"name":"def"},{"name":"hijk"}]}';
  StringGrid1.Cells[1,0]:='No';
  StringGrid1.Cells[2,0]:='name';
  StringGrid1.ColCount:=3;
  StringGrid1.ColWidths[0]:=40;
  StringGrid1.ColWidths[1]:=40;
  StringGrid1.RowCount:=2;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    jData : TJSONData;
   i:integer;
begin
   // https://wiki.freepascal.org/fcl-json
   jData := GetJSON(Memo1.Text);
   StringGrid1.RowCount:=2;
   for i := 0 to jData.findpath('data').Count - 1 do
   begin
    if i+2>StringGrid1.RowCount then StringGrid1.RowCount:=StringGrid1.RowCount+1;
    StringGrid1.Cells[1,i+1]:=IntToStr(i+1);
    StringGrid1.Cells[2,i+1]:=jData.findpath('data').Items[i].FindPath('name').AsString;
   end;
end;