Delphi Json veri Alma

Qr-code lar da oluşan verileri okumak için aşağıdaki kodlar yardımcı olacaktır

aşağıdaki örnek bir e-irsaliye de bulunan qr-code verisinin içindeki almak için örneklendirilmiştir

uses System.JSON;

procedure TForm3.Button1Click(Sender: TObject);
var
  jsonData: TJSONObject;
begin
  // JSON veriyi bir TJSONObject nesnesine çözümle
  jsonData := TJSONObject.ParseJSONValue(Memo1.Lines.Text) as TJSONObject;

  if Assigned(jsonData) then
  begin
    try
      // ettn değerini al
      edit1.Text := jsonData.GetValue('ettn').Value;
      edit2.Text := jsonData.GetValue('vkntckn').Value;
      edit3.Text := jsonData.GetValue('avkntckn').Value;
      edit4.Text := jsonData.GetValue('senaryo').Value;
      edit5.Text := jsonData.GetValue('tip').Value;
      edit6.Text := jsonData.GetValue('tarih').Value;
      edit7.Text := jsonData.GetValue('no').Value;
      edit8.Text := jsonData.GetValue('sevktarihi').Value;
      edit9.Text := jsonData.GetValue('sevkzamani').Value;
      edit10.Text := jsonData.GetValue('tasiyicivkn').Value;
      edit11.Text := jsonData.GetValue('plaka').Value;


    finally
      jsonData.Free;
    end;
  end
  else
  begin
    ShowMessage('JSON Verisi Çözümlenemedi.');
  end;
end;

Örnek Programı İndirmek için aşağıdaki bağlantıyı kullanınız

Kaynak Kodları İndir

Delphi Web Browser Yazdırma İşlemleri

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate(‘https://ahmetaydinlik.com/‘);
end;

// Yazdır Dialog Penceresi Açmadan Yazdırma

procedure TForm1.Button2Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,
    vaIn, vaOut);
end;

// Yazdırma Dialog Penceres Açarak Yazdırma

procedure TForm1.Button3Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER,
    vaIn, vaOut);
end;

// Önizleme

procedure TForm1.Button4Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW,
    OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
end;

// Sayfa ayarları dialogu açarak

procedure TForm1.Button5Click(Sender: TObject);
var
  vaIn, vaOut: OleVariant;
begin
  WebBrowser1.ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER,
    vaIn, vaOut);
end;

Font Style Stringe Çevirme ve String i Font Style Çevirme
function FontStyletoStr(St: TFontStyles): string;
var
  S: string;
begin
  S := '';
  if St = [fsbold] then S := 'Kalın'
  else if St = [fsItalic] then S := 'İtalik'
  else if St = [fsStrikeOut] then S := 'Üstu Çizgili'
  else if St = [fsUnderline] then S := 'Altı Çizgili'

  else if St = [fsbold, fsItalic] then S := 'Kalın İtalik'
  else if St = [fsBold, fsStrikeOut] then S := 'Kalın, Üstü Çizgili'
  else if St = [fsBold, fsUnderline] then S := 'Kalın, Altı Çizlili'
  else if St = [fsbold,fsItalic, fsStrikeOut] then S := 'Kalın İtalic Üstü Çizgili'
  else if St = [fsBold, fsUnderline,fsStrikeOut] then S := 'Kalın Altı Çizgili Üstü Çizgili'
  else if St = [fsbold,fsItalic, fsUnderline] then S := 'Kalın İtalic Altı Çizgili'
  else if St = [fsItalic, fsStrikeOut] then S := 'İtalik Üstü Çizgili'
  else if St = [fsItalic,fsUnderline] then S := 'İtalik Altı Çizgili'
  else if St = [fsUnderLine,fsStrikeOut] then S := 'Altı Üstü Çizgili'
  else if St = [fsItalic,fsStrikeOut] then S := 'İtalik Altı Çizgili';
  Result := S;
end;

function Pnn_StrtoFontStyle(St: string): TFontStyles;
var
  S: TfontStyles;
begin
  S  := [];

  if St = 'Kalın' then S :=[fsbold]
  else if St = 'İtalik'  then S :=[fsItalic]
  else if St = 'Üstu Çizgili' then S :=[fsStrikeOut]
  else if St = 'Altı Çizgili' then S := [fsUnderline]

  else if St = 'Kalın İtalik' then S :=[fsbold,fsItalic]
  else if St = 'Kalın, Üstü Çizgili' then S :=[fsBold, fsStrikeOut]
  else if St = 'Kalın, Altı Çizlili' then S :=[fsBold, fsUnderline]
  else if St = 'Kalın İtalic Üstü Çizgili' then S :=[fsbold,fsItalic, fsStrikeOut]
  else if St = 'Kalın İtalic Altı Çizgili' then S := [fsbold,fsItalic, fsUnderline]
  else if St = 'Kalın Altı Çizgili Üstü Çizgili' then S :=[fsBold, fsUnderline,fsStrikeOut]

  else if St = 'İtalik Üstü Çizgili' then S :=[fsItalic, fsStrikeOut]
  else if St = 'İtalik Altı Çizgili'  then S :=[fsItalic,fsUnderline]
  else if St = 'Altı Üstü Çizgili' then S := [fsUnderLine,fsStrikeOut]
  else if St = 'İtalik Altı Çizgili' then S := [fsItalic,fsStrikeOut];
  Result := S;
end;

Kullanımı

Font Dialogtaki Seçilen Style ı string e çeviriyoruz
edit1.text :=  FontStyletoStr(FontDialog1.Font.Style);

Edit teki Style ımızı Edit1 in fontuna atıyoruz
Edit1.Font.Style := StrtoFontStyle(Edit1.Text);
Delphi Tutarı Yazıya Çevirme Function
function YaziyaCevir(Rakam:real ):string;
  const
    b1:ARRAY [1..9] of string =
      ('BİR','İKİ','ÜÇ','DÖRT','BEŞ','ALTI','YEDİ','SEKİZ','DOKUZ');
    b2:ARRAY [1..9] of string =
      ('ON','YİRMİ','OTUZ','KIRK','ELLİ','ALTMIŞ','YETMİŞ','SEKSEN','DOKSAN');
    b3:ARRAY [1..6] of string =
      ('KATRİLYON','TRİLYON','MİLYAR','MİLYON','BİN','');
  var
    gr:ARRAY [1..6] of string[3];
    sn:ARRAY [1..6] of string;
    bs:ARRAY [1..3] of integer;
    tutars, tutart, tutark , sonuct, sonuck: string;
    tur,i,l: integer;


  begin
     tutars:=floattostr(Rakam);
     if pos(',',tutars)=0 then tutars:=tutars+',00';
     tutart:=copy(tutars,1,(pos(',',tutars)-1));
     tutark:=copy(tutars,(pos(',',tutars)+1),2);
     tutart:=stringofchar('0',(18-(length(trim(tutart))))) + tutart;
     tutark:=tutark + stringofchar('0',( 2-(length(trim(tutark)))));
     for i:=1 to 6 do gr[i]:=copy(tutart,1+(3*(i-1)),3);

     for l:=1 to 6 do
      begin
        bs[1]:=strtoint(copy(gr[l],1,1));
        if bs[1]<>0 then
          (
            if bs[1]<>1 then
              sn[l]:=sn[l]+b1[bs[1]]+'YÜZ'
            else
              sn[l]:=sn[l]+'YÜZ'
          );
        bs[2]:=strtoint(copy(gr[l],2,1));
        if bs[2]<>0 then sn[l]:=sn[l]+b2[bs[2]];
        bs[3]:=strtoint(copy(gr[l],3,1));
        if bs[3]<>0 then sn[l]:=sn[l]+b1[bs[3]];
        if length(trim(sn[l]))<>0 then sn[l]:=sn[l]+b3[l];
      end;

     if sn[5]='BİRBİN' then sn[5]:='BİN';
     for i:=1 to 6 do sonuct:=sonuct+sn[i];
     if strtoint(copy(tutark,1,1))<> 0 then sonuck:=sonuck + b2[strtoint(copy(tutark,1,1))];
     if strtoint(copy(tutark,2,1))<> 0 then sonuck:=sonuck + b1[strtoint(copy(tutark,2,1))];
     if tur=0 then result:=sonuct + '.TL / ' + sonuck + '.KR ';
     if tur=1 then result:=sonuct + '.TL ';
     if tur=2 then result:=sonuck + '.KR ';
  end;
Delphi Dosya base64 Decode ve Encode

Projemize alttaki kütüphaneleri ekliyoruz

daha sonra formumuza 2 adet buton bir tane filenameedit yada opendialog da olabilir 1 tane de memo ekliyoruz

     
    uses Soap.EncdDecd,System.NetEncoding;

Dosyamızı base64 formatına çevirmek için aşağıdaki kodu kullanıyoruz


procedure TForm3.Button1Click(Sender: TObject);
var
   stream: TMemoryStream;
begin
    stream := TMemoryStream.Create;
     try
           stream.LoadFromFile(JvFilenameEdit1.Text);
           Memo1.Text := EncodeBase64(stream.Memory, stream.Size);
     finally
          stream.Free;
  end;
end;


Base64 olan bir string i dosyaya çevirmek için benim çevirdiğim dosya pdf olduğundan pdf olarak ekledim


procedure TForm3.Button2Click(Sender: TObject);
var
   stream : TmemoryStream;
begin
stream := TmemoryStream.Create;
   stream.write(TNetEncoding.Base64.DecodeStringToBytes(Memo1.Text),
   length(TNetEncoding.Base64.DecodeStringToBytes(Memo1.Text)));
    stream.Position := 0;
   stream.SaveToFile('d:\test2.pdf');
end;


Delphi 10.4 FreeAndNil Hatası Çözümü

Delphi 10.3 olan freeandnil komutunda 10.4 versiyonunda değişikliğe gidilmesinden dolayı sadece Tobject leri gönderebiliyoruz array ları freeandnil olarak kullanamıyoruz

Delphi 10.3 deki FreeAndNil Procedure 
procedure FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  TObject(Obj) := nil;
end;
{$ENDIF}
Delphi 10.4 deki FreeAndNil Procedure 

procedure FreeAndNil(const [ref] Obj: TObject);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := Obj;
  TObject(Pointer(@Obj)^) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  Obj := nil;
end;
{$ENDIF}

çözüm için şöyle bir yol buldum 

procedure AHMET_FreeAndNil(var Obj);
{$IF not Defined(AUTOREFCOUNT)}
var
  Temp: TObject;
begin
  Temp := TObject(Obj);
  Pointer(Obj) := nil;
  Temp.Free;
end;
{$ELSE}
begin
  TObject(Obj) := nil;
end;
{$ENDIF}

10.4 versiyonunda procedure nin ismini değiştirip projeye dahil ettiğimizde AHMET_FreeAndNil(array1); olarak kullanıp arrayları free edebiliyoruz
Delphi FMX Mobil de Enter Tuşu İle İlermek

Mobil uygulama klavyedeki Enter tuşuna basınca sonraki işleme yapmak için kullandığım kod

procedure TForm.SifreKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if sender is TEdit then
    if Key in [vkReturn] then
      case TEdit(sender).ReturnKeyType   of
        TReturnKeyType.Send : Button1Click(Self);
      end;
end;
Delphi FMX Grid Renklendirme

Delphi Firemonkey string grid renklendirme kodu

procedure TForm.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
 
begin
 aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
 
if Sartim > 0 then
  aRowColor.Color := TAlphaColorRec.Aqua
else
if Sartim  = 0 Then
  ARowColor.Color := TAlphaColorRec.Lime
else
if Sartim  <  0 then
  aRowColor.Color := TAlphaColorRec.Aliceblue;
 
aNewRectF := Bounds;
aNewRectF.Inflate(3, 3);
Canvas.FillRect(aNewRectF, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
 
aRowColor.free;
 
 
 
end;
Delphi JSON Class Örnek

Delphi ile json işlemlerinde class oluşturarak uygulamaya dahil edilmesi ve kullanımı

öncelikle bir json formatında dosyaya ihtiyacımız var bunun https://www.json-generator.com/ adresinden bir json oluşturacağım

generate butonuna basarak json oluşturma işlemini tamamlıyorum ve dowloand JSON file butonu ile dosyayı indiriyorum

dosyamı indirdikten sonra https://jsontodelphi.com/ adresinden oluşturmus olduğum Json dosyama uygun bir şekilde class oluşturmasını istiyorum burada json verilerimizi ekliyoruz ve generate butonuna basıyoruz

Json class ımız oluşturduktan sonra aşağıdaki şekilde pencere açılıyor ve classlarımızı indiriyoruz

Dosyalarımızı indirip kaydettikden sonra Delphi de yeni bir uygulama oluşturup classlarımızı projemize ekliyoruz

projemize ekledikten sonra uses satırına bu iki class ı ekliyerek işlemlere başlıyabiliriz

unit AnaFormU;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm3 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;



implementation

{$R *.dfm}

uses Pkg.Json.DTO, RootUnit;

end.

projedeki kodlarımız bu şekilde olması gerekli dosyalarımızı ekledikten sonra

daha sonra forma bir adet memo ve bir adet buton ekliyorum. Bu kullanım isteğine göre direk dosyayı da okuyup alabilirsiniz farklı yöntemlerde kullanılabiliriz.

eklediğim memo nesnesine json verimi ekliyorum

procedure TForm3.Button1Click(Sender: TObject);
var
  JSonRoot : TRootDTO;
  I: Integer;
  Y: Integer;
begin
  JSonRoot := TRootDTO.Create;
  try
    JSonRoot.AsJson := Memo1.Text;
    For I := 0 to JSonRoot.Items.Count -1 do // ana root un altındaki veriler için kurulan döngü
    Begin
      ShowMessage(JSonRoot.Items[I].About);

      For Y := 0 to JSonRoot.Items[I].Friends.Count -1 do  // alt kırılımdaki veriler için kurulan döngü
      Begin
         ShowMessage(JSonRoot.Items[I].Friends.Items[Y].Name);
      End;
    End;
  finally
    JSonRoot.Free;
  end;
end;

butonumuz altında eklediğim kodlar ile json nesnelerine istediğimiz gibi ulaşabiliriz ve buradan sonra hangi işlemleri yaptırmak istiyorsak o kodları yazıp istediğimiz gibi kullanabiliriz.

Rest yönteminde de aynı yapı kullanılabilir.

örnek proje dosyalarını indirmek için : https://disk.yandex.com.tr/d/vNHwOxFThIMbgQ

Json Dosya

[
  {
    "_id": "609f90fdb6183a5e4b5f9c47",
    "index": 0,
    "guid": "52597634-ea2b-4977-a4cf-4ee6283cb035",
    "isActive": false,
    "balance": "$3,217.24",
    "picture": "http://placehold.it/32x32",
    "age": 33,
    "eyeColor": "blue",
    "name": "Cummings Mcgee",
    "gender": "male",
    "company": "FUELTON",
    "email": "cummingsmcgee@fuelton.com",
    "phone": "+1 (870) 434-2176",
    "address": "235 Linwood Street, Coloma, Northern Mariana Islands, 8966",
    "about": "Ut et dolor mollit aliquip et aute labore ea ut exercitation amet occaecat ex. Laboris sunt mollit nulla mollit est ea excepteur sint ex dolore id aliqua. Non laborum ipsum sit reprehenderit ullamco. Culpa velit ullamco aute dolor. Velit sunt incididunt amet elit consectetur excepteur amet ex mollit eu sunt eiusmod.\r\n",
    "registered": "2018-12-28T11:52:08 -03:00",
    "latitude": -44.755947,
    "longitude": 6.985219,
    "tags": [
      "labore",
      "eiusmod",
      "magna",
      "adipisicing",
      "occaecat",
      "consectetur",
      "id"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Taylor May"
      },
      {
        "id": 1,
        "name": "Zimmerman Conner"
      },
      {
        "id": 2,
        "name": "Casey Howell"
      }
    ],
    "greeting": "Hello, Cummings Mcgee! You have 5 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd768c4ddf28327448",
    "index": 1,
    "guid": "bf240ca4-5264-4b98-8c83-1e1f2271022f",
    "isActive": true,
    "balance": "$2,203.26",
    "picture": "http://placehold.it/32x32",
    "age": 39,
    "eyeColor": "green",
    "name": "Chandler Richards",
    "gender": "male",
    "company": "LUNCHPAD",
    "email": "chandlerrichards@lunchpad.com",
    "phone": "+1 (863) 596-2946",
    "address": "842 Cumberland Walk, Barclay, Wisconsin, 5437",
    "about": "Ea eu ullamco nostrud laborum eu id elit sint velit. Aute cillum veniam sit sunt. Commodo do non adipisicing in duis minim ut ullamco. Dolore irure fugiat quis officia ad laboris quis incididunt. Id enim nisi irure Lorem. Sunt cillum minim ipsum consequat sunt voluptate ex ullamco ea fugiat labore commodo culpa. Magna nisi veniam non laborum dolore quis laboris amet proident ipsum amet est velit.\r\n",
    "registered": "2016-07-05T03:43:22 -03:00",
    "latitude": -78.387974,
    "longitude": 122.367721,
    "tags": [
      "pariatur",
      "est",
      "sint",
      "nisi",
      "ex",
      "proident",
      "ipsum"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Brandi Cervantes"
      },
      {
        "id": 1,
        "name": "Bird Taylor"
      },
      {
        "id": 2,
        "name": "Shields Lynch"
      }
    ],
    "greeting": "Hello, Chandler Richards! You have 4 unread messages.",
    "favoriteFruit": "banana"
  },
  {
    "_id": "609f90fd565c87fb4bc0cf08",
    "index": 2,
    "guid": "48d47780-50e6-40f7-be71-11288b87cd8f",
    "isActive": false,
    "balance": "$3,285.38",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "blue",
    "name": "Noble Gallagher",
    "gender": "male",
    "company": "REALMO",
    "email": "noblegallagher@realmo.com",
    "phone": "+1 (880) 492-2817",
    "address": "946 Central Avenue, Blandburg, Michigan, 2916",
    "about": "Sunt officia qui nulla aute cillum. Irure aliqua do enim do irure dolor tempor. Aute aliquip consectetur deserunt sint tempor aute commodo ea consectetur pariatur adipisicing ullamco et velit. Qui aliqua aliqua minim elit est laboris veniam duis occaecat consectetur. Qui proident laborum culpa consequat nulla elit sit anim consequat. Ea excepteur elit nulla nisi est ipsum esse commodo Lorem voluptate. Incididunt nisi minim eiusmod aliqua.\r\n",
    "registered": "2014-02-04T01:52:38 -02:00",
    "latitude": -81.255892,
    "longitude": -125.918893,
    "tags": [
      "sunt",
      "magna",
      "sunt",
      "consequat",
      "pariatur",
      "esse",
      "non"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Petra Waters"
      },
      {
        "id": 1,
        "name": "Wiley James"
      },
      {
        "id": 2,
        "name": "Emerson Fulton"
      }
    ],
    "greeting": "Hello, Noble Gallagher! You have 3 unread messages.",
    "favoriteFruit": "strawberry"
  },
  {
    "_id": "609f90fd5f4cc2c9fa433416",
    "index": 3,
    "guid": "a2ee1e27-e694-414a-9197-1b0fc3f83e84",
    "isActive": true,
    "balance": "$1,092.75",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "blue",
    "name": "Edna Head",
    "gender": "female",
    "company": "CALLFLEX",
    "email": "ednahead@callflex.com",
    "phone": "+1 (848) 598-3042",
    "address": "718 Crooke Avenue, Dargan, Montana, 4841",
    "about": "Eiusmod ut sunt duis reprehenderit velit id cillum minim. Commodo labore eu nulla ut proident dolor. Culpa reprehenderit elit proident eu officia anim dolore ut aute ipsum reprehenderit laborum enim. Nulla proident esse occaecat incididunt qui proident voluptate esse. Irure aliqua nisi in magna consectetur pariatur eiusmod aliquip est tempor. Lorem mollit eu reprehenderit nulla fugiat.\r\n",
    "registered": "2016-12-08T04:03:57 -03:00",
    "latitude": -55.840006,
    "longitude": 123.928552,
    "tags": [
      "ea",
      "nostrud",
      "occaecat",
      "occaecat",
      "laborum",
      "ipsum",
      "anim"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Norton Boyle"
      },
      {
        "id": 1,
        "name": "Gena Spears"
      },
      {
        "id": 2,
        "name": "Billie Franks"
      }
    ],
    "greeting": "Hello, Edna Head! You have 5 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd8b0843359e1aec3d",
    "index": 4,
    "guid": "f6203fa2-8663-4839-8f6f-057b23666e66",
    "isActive": true,
    "balance": "$2,409.46",
    "picture": "http://placehold.it/32x32",
    "age": 31,
    "eyeColor": "brown",
    "name": "Holden Dale",
    "gender": "male",
    "company": "STRALOY",
    "email": "holdendale@straloy.com",
    "phone": "+1 (888) 536-3882",
    "address": "692 Russell Street, Canby, Wyoming, 8722",
    "about": "Est sint laboris labore et cillum velit Lorem excepteur id labore adipisicing incididunt. Mollit mollit aute ipsum exercitation exercitation elit non Lorem ipsum laborum anim. Non incididunt eu qui consequat elit ea cillum consectetur aute minim do cillum minim aute. Laborum incididunt id nisi voluptate in. Duis est esse mollit proident. Dolor consequat ut non magna dolore.\r\n",
    "registered": "2015-11-08T12:25:28 -03:00",
    "latitude": 78.775663,
    "longitude": -132.169324,
    "tags": [
      "consectetur",
      "commodo",
      "labore",
      "ea",
      "incididunt",
      "tempor",
      "excepteur"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Snider Koch"
      },
      {
        "id": 1,
        "name": "Nina Mcknight"
      },
      {
        "id": 2,
        "name": "Clay Bullock"
      }
    ],
    "greeting": "Hello, Holden Dale! You have 2 unread messages.",
    "favoriteFruit": "banana"
  },
  {
    "_id": "609f90fd7da5851dc6d4e963",
    "index": 5,
    "guid": "23d4bb4e-70ab-4c5e-99d0-98a7f9d25bce",
    "isActive": false,
    "balance": "$1,836.32",
    "picture": "http://placehold.it/32x32",
    "age": 28,
    "eyeColor": "green",
    "name": "Bradshaw Randall",
    "gender": "male",
    "company": "KENGEN",
    "email": "bradshawrandall@kengen.com",
    "phone": "+1 (955) 517-3942",
    "address": "485 Morgan Avenue, Brenton, Idaho, 4739",
    "about": "Labore voluptate cupidatat id ea Lorem dolore ipsum qui. Elit aute et dolore enim nulla eu nisi incididunt dolore officia tempor. Cillum veniam consequat cillum nisi in.\r\n",
    "registered": "2019-02-06T07:16:15 -03:00",
    "latitude": 75.626382,
    "longitude": -27.711717,
    "tags": [
      "labore",
      "consequat",
      "incididunt",
      "ex",
      "incididunt",
      "voluptate",
      "cupidatat"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Cooke Hancock"
      },
      {
        "id": 1,
        "name": "Suarez Hood"
      },
      {
        "id": 2,
        "name": "Bates Leblanc"
      }
    ],
    "greeting": "Hello, Bradshaw Randall! You have 7 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "609f90fd70cc6cec2e8ce707",
    "index": 6,
    "guid": "25feec15-c3f9-4a79-950b-88e76a78b675",
    "isActive": false,
    "balance": "$3,214.59",
    "picture": "http://placehold.it/32x32",
    "age": 24,
    "eyeColor": "green",
    "name": "Darlene Glover",
    "gender": "female",
    "company": "KROG",
    "email": "darleneglover@krog.com",
    "phone": "+1 (959) 522-2797",
    "address": "631 Gardner Avenue, Crisman, Louisiana, 3576",
    "about": "Quis pariatur cillum cillum sint et consectetur occaecat velit laboris elit et mollit. Veniam ut velit id enim consequat consequat id officia aliquip anim consequat qui. Quis cillum in ipsum consectetur aliqua exercitation voluptate laborum in laborum eu minim consequat. Nisi occaecat enim ad aute sit incididunt do ullamco et nulla. Nulla officia in mollit duis consectetur culpa excepteur. Dolor ullamco est commodo magna irure occaecat eu excepteur exercitation dolore duis officia. Cillum aliquip id sunt sunt in labore anim mollit laboris est dolor exercitation consectetur.\r\n",
    "registered": "2018-07-03T03:10:32 -03:00",
    "latitude": -42.579361,
    "longitude": 178.507411,
    "tags": [
      "ea",
      "do",
      "incididunt",
      "magna",
      "est",
      "ex",
      "reprehenderit"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Rosalie Knight"
      },
      {
        "id": 1,
        "name": "Mccoy King"
      },
      {
        "id": 2,
        "name": "Darla Morin"
      }
    ],
    "greeting": "Hello, Darlene Glover! You have 3 unread messages.",
    "favoriteFruit": "apple"
  }
]