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;