Si vas a trabajar mucho con estar estructura (y también para mantener un código limpio), vale la pena utilizar esta herramienta de la que ya he hablado en el blog.
JsonToDelphiClass
Permite como su nombre indica, generar una unit con las clases necesarias para trabajar con el JSON que le proporciones.
Si la generas para este JSON obtendrás el fichero que te adjunto.
La gracias es que con una línea como esta puedes cargar todo el JSON es un objeto.
Código Delphi
[-]
var
ULista:TListaUsuarios;
begin
ULista := TListaUsuarios.FromJsonString(Memo1.Lines.Text);
A partir de este punto, en ULista tienes todo el JSON.
Para recorrerlo y acceder a los elementos puedes utilizar algo así (o para guardarlos en un TSTringGrid):
Código Delphi
[-]
procedure TForm2.FormShow(Sender: TObject);
var
nUsuarios:integer;
i:integer;
us:TUsuariosClass;
begin
ULista := TListaUsuarios.FromJsonString(Memo1.Lines.Text);
nUsuarios := Length(ULista.Usuarios);
SG.RowCount := nUsuarios + 1;
SG.Cells[0, 0] := 'Id';
SG.Cells[1, 0] := 'Nombre';
SG.Cells[2, 0] := 'Apellidos';
for i := 0 to (nUsuarios - 1) do begin
us := ULista.Usuarios[i];
SG.Cells[0, i+1] := us.Usuario.id;
SG.Cells[1, i+1] := us.Usuario.nombre;
SG.Cells[2, i+1] := us.Usuario.apellidos;
end;
end;