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;