Sabemos que JSON (JavaScript Object Notation) es un formato de texto para poder intercambiar datos multiplataformas.
A partir del año 2019, se convirtió en un formato totalmente independiente, y ha tenido tanto éxito que hasta Google lo utiliza en sus Api’s.
En un artículo anterior, hemos explicado como parsear datos JSON, y en este veremos su sintaxis.
Sintaxis JSON
En JSON tenemos disponible seis tipos de datos, pero aunque parezcan pocos, con ellos abarcamos absolutamente todo.
Los tipos de datos disponibles en JSON son Número, Cadenas, Booleanos, Array, Objetos y valor null.
JSON: Números
En Delphi, este tipo de datos permite tanto números enteros como fraccionales, positivos como negativos.
Los número se deben ingresar a través del objeto TJSONNumber.
// JSON en Delphi: Números
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
begin
vJSON := TJSONObject.Create;
vJSON.AddPair('numeros', TJSONNumber.Create(123));
vJSON.AddPair('numeros', TJSONNumber.Create(-123));
vJSON.AddPair('numeros', TJSONNumber.Create(123.45));
vJSON.AddPair('numeros', TJSONNumber.Create(-123.45));
end;
// Formato resultante:
// {"numeros":123,"numeros":-123,"numeros":123.45,"numeros":-123.45}
JSON: Cadenas
Con este tipo de datos, podemos ingresar cualquier clase de caracteres, desde una cadena vacía o más, en formato JSON se representan entre comillas dobles.
// JSON en Delphi: Cadenas
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
begin
vJSON := TJSONObject.Create;
vJSON.AddPair('cadenavacia', '');
vJSON.AddPair('cadenas', 'esta es una cadena');
end;
// Formato resultante:
// {"cadenavacia":"","cadenas":"esta es una cadena"}
JSON: Booleanos
Este tipo de datos representan valores booleanos y pueden tener dos valores True y False.
Los Booleanos se deben ingresas a través de los objetos TJSONTrue y TJSONFalse.
// JSON en Delphi: Booleanos
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
begin
vJSON := TJSONObject.Create;
vJSON.AddPair('verdadero', TJSONTrue.Create);
vJSON.AddPair('falso', TJSONFalse.Create);
end;
// Formato resultante:
// {"verdadero":true,"falso":false}
JSON: Array
Los Array en JSON representan un lista ordenada de cero o más valores de cualquiera de los tipos de datos aceptados por JSON.
Los diferentes valores van separados por comas (,) y el vector se representa entre corchetes [] y se ingresan a través del objeto TJSONArray.
// JSON en Delphi: Array
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
vJSON2: TJSONObject;
vJSONArray: TJSONArray;
begin
vJSON := TJSONObject.Create;
vJSON2 := TJSONObject.Create;
vJSON.AddPair('Valor1', TJSONNumber.Create(1));
vJSON.AddPair('Valor2', TJSONNumber.Create(2));
vJSON.AddPair('Valor3', TJSONNumber.Create(3));
vJSONArray := TJSONArray.Create;
vJSONArray.AddElement(vJSON);
vJSON2.AddPair('Array', vJSONArray);
end;
// Formato resultante:
// {"Array":[{"Valor1":1,"Valor2":2,"Valor3":3}]}
JSON: Null
Como su nombre lo indica, representa un valor null.
El valor Null se ingresa a través del objeto TJSONNull.
// JSON en Delphi: Null
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
begin
vJSON := TJSONObject.Create;
vJSON.AddPair('valornulo', TJSONNull.Create);
end;
// Formato resultante:
// {"valornulo":null}
JSON: Objetos
Representa a colecciones no ordenadas depares (Pair) de cualquier tipo de datos soportados por JSON, con un nombre representando el nombre del objeto.
// JSON en Delphi: Objetos
Uses
System.JSON;
procedure JSONPair;
var
vJSON: TJSONObject;
vJSONObj: TJSONObject;
begin
vJSON := TJSONObject.Create;
vJSONObj := TJSONObject.Create;
vJSON.AddPair('numeros', TJSONNumber.Create(123));
vJSON.AddPair('cadenas', 'esta es una cadena');
vJSON.AddPair('verdadero', TJSONTrue.Create);
vJSON.AddPair('valornulo', TJSONNull.Create);
vJSONObj.AddPair('objeto', vJSON);
end;
// Formato resultante:
// {"objeto":{"numeros":123,"cadenas":"esta es una cadena","verdadero":true,"valornulo":null}}