objetos de maniobras simples unmarshalling
-
19-09-2019 - |
Pregunta
apoyo JSON es una de las nuevas características de Delphi 2009 y Delphi 2010. Quiero saber si es que hay alguna función sencilla que permita reunir los / unmarshalling directamente entre la cadena y el objeto como en la biblioteca SuperObject.
Ejemplo:
MyKnownObject := FromJSON('{name:"francis", surname:"lee"}');
Solución
unserialize una cadena directamente a un TJSONObject
var
ConvertFrom: String;
JSON: TJSONObject;
StringBytes: TBytes;
I: Integer;
begin
ConvertFrom := '{"name":"somebody on SO","age":"123"}';
StringBytes := TEncoding.ASCII.GetBytes(ConvertFrom);
JSON := TJSONObject.Create;
try
JSON.Parse(StringBytes, 0);
Assert(JSON.ToString = ConvertFrom, 'Conversion test');
Memo1.Lines.Add(JSON.ToString);
for I := 0 to JSON.Size - 1 do
Memo1.Lines.Add(JSON.Get(I).JsonString.Value +
' : ' + JSON.Get(I).JsonValue.Value);
finally
JSON.Free;
end;
end;
Otros consejos
aquí . Abajo se cortó la parte interesante:
procedure TForm13.Button4Click(Sender: TObject);
var
LContact: TContact;
oMarshaller: TJSONMarshall;
crtVal: TJSONValue;
begin
LContact:=TContact.Create; //our custom class
LContact.Name:='wings-of-wind.com';
LContact.Age:=20; //fill with some data
oMarshaller:=TJSONMarshal.Create(TJSONConverter.Create); //our engine
try
crtVal:=oMarshaller.Marshal(LContact); //serialize to JSON
Memo1.Text:=crtVal.ToString; //display
finally //cleanup
FreeAndNil(LContact);
FreeAndNil(oMarshaller);
end;
end;
También se puede ver aquí un ejemplo más complicado por Adrian Andrei (el arquitecto DataSnap), así como un ejemplo de cálculo de referencias personalizado aquí .
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow