FwSerializable
Interface TLPP pra classes que precisam serializar/deserializar JSON automaticamente. Substitui escrita manual de toJson/fromJson em cada classe.
Assinatura: class Foo from FwSerializable + toJson() + fromJson()
Retorna: class
FwSerializable e classe base TLPP que implementa serializacao automatica pra/de JSON. Voce herda dela e seus campos publicos viram JSON sem voce escrever nada.
Sintaxe
#include 'tlpp-core.th'
namespace empresa.modelo
class Cliente from FwSerializable
public data id as character
public data nome as character
public data idade as numeric
public data ativo as logical default .T.
endclassUso
local oCli as object
oCli := Cliente():new()
oCli:id := '001'
oCli:nome := 'Mayco'
oCli:idade := 30
// Serializa AUTOMATICO
local cJson as character
cJson := oCli:toJson()
// {"id":"001","nome":"Mayco","idade":30,"ativo":true}
// Deserializa AUTOMATICO
local oCli2 as object
oCli2 := Cliente():new()
oCli2:fromJson('{"id":"002","nome":"Costa","idade":35}')
conout(oCli2:nome) // CostaVantagem sobre JsonObject manual
Sem FwSerializable:
// 20 linhas de toJson/fromJson manualmente
function ClienteToJson(oCli) as character
local oJson := JsonObject():new()
oJson['id'] := oCli:id
oJson['nome'] := oCli:nome
oJson['idade'] := oCli:idade
oJson['ativo'] := oCli:ativo
return oJson:toJson()Com FwSerializable: classe pronta, sem boilerplate.
Pegadinhas
- So serializa campos
public— private fica de fora - Campo do tipo
object: precisa serFwSerializabletambem (recursivo) - Campo
array: serializa OK, mas type-check pode falhar ao desserializar se nao for tipado
Exemplos
Classe serializavel
class Foo from FwSerializable
public data bar as character
endclass