
Prostą funkcją, która pozwala nam na przekształcenie listy obiektów do formatu JSON jest funkcja TJson.ObjectToJSonString z modułu REST. Poniżej przedstawię krótki kod odpowiedzialny za przygotowanie danych z poziomu serwera WWW (TIdHTTPServer).
Najpierw kod klasy (obiektu), jest to klasa Osoba z trzema właściwościami:
TOsoba = class(TObject) private FImie: string; FNazwisko: string; FPlec: string; protected public constructor Create(AImie, ANazwisko, APlec: string); property Imie: string read FImie write FImie; property Nazwisko: string read FNazwisko write FNazwisko; property Plec: string read FPlec write FPlec; end;
Następnie w zdarzeniu CommandGet serwera TIdHTTPServer przygotowujemy dane:
procedure TmkMainForm.webServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); begin if ARequestInfo.URI = '/osoby.json' then begin AResponseInfo.CharSet := 'utf-8'; AResponseInfo.ContentType := 'application/json'; AResponseInfo.ContentText := PrzygotujJSON; end; end;
,gdzie funkcja PrzygotujJSON ma postać:
function TmkMainForm.PrzygotujJSON: string;
var
FOsoby : TObjectList<TOsoba>;
begin
FOsoby := TObjectList<TOsoba>.Create(True);
FOsoby.Add(TOsoba.Create('Adam','Mickiewicz','M'));
FOsoby.Add(TOsoba.Create('Jan','Nowak','M'));
FOsoby.Add(TOsoba.Create('Genowefa','Pigwa','K'));
Result := TJson.ObjectToJSonString(FOsoby);
FOsoby.Free;
end;