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;