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.
endclass

Uso

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)  // Costa

Vantagem 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

Exemplos

Classe serializavel

class Foo from FwSerializable
    public data bar as character
endclass

Veja também