DJOM é um mapeador JSON→Object com uma abordagem declarativa e fluente, criado para Delphi, que permite definir o relacionamento entre campos JSON e propriedades de objetos de forma expressiva, poderosa e reutilizável.
Inspirado em ferramentas modernas de mapeamento de dados e no poder do RTTI do Delphi, DJOM oferece suporte a:
- ✅ Mapeamento declarativo campo→propriedade
- ✅ Valores padrão (
WithDefault) - ✅ Conversores customizados (
WithConverter) - ✅ Validações (
Validate) - 🚧 Suporte a tipos complexos (em andamento)
- 🚧 Suporte a listas e exportação reversa (em planejamento)
- 🚧 Integração com Spring.Expressions (planejado)
uses
DJOM.Mapper;
type
TUser = class
public
UserName: string;
Age: Integer;
BirthDate: TDate;
end;
var
mapper: IJsonMapper<TUser>;
user: TUser;
begin
mapper := TJsonMapper<TUser>.Create
.Field('user_name').ToProp('UserName')
.Field('age').ToProp('Age').WithDefault(18)
.Field('birth').ToProp('BirthDate').WithConverter(
function(const V: TValue): TValue
begin
Result := StrToDate(V.AsString);
end
).Validate(
function(const V: TValue): Boolean
begin
Result := V.AsDateTime < Now;
end
);
user := mapper.Apply('{"user_name": "Diego", "birth": "1990-01-01"}');
ShowMessage(user.UserName); // Diego
end;Opção 1 – Via Boss
boss install github.com/thedelphideveloper/djom- Baixe o repositório
- Adicione a pasta
/Sourceao Library Path do Delphi - Use a unit
DJOM.Mappernos seus projetos
/DJOM
├── Source/
│ ├── DJOM.Mapper.pas // Core: Interfaces e mapeador
│ ├── DJOM.Types.pas // Structs e helpers de mapeamento
│ ├── DJOM.Converters.pas // Converters prontos (em breve)
│ ├── DJOM.Validations.pas // Validações comuns (em breve)
├── Samples/
│ ├── Sample.Basic.dpr // Uso básico do DJOM
├── Tests/
│ └── DJOM.Tests.pas // Testes unitários (DUnitX)
| Método | Descrição |
|---|---|
Field(JsonName) |
Inicia o mapeamento de um campo JSON |
.ToProp(PropertyName) |
Define a propriedade da classe alvo |
.WithDefault(Value) |
Usa valor padrão se o campo JSON estiver ausente |
.WithConverter(Func) |
Aplica função de conversão ao valor antes de aplicar |
.Validate(Func) |
Valida o valor antes de aplicar – lança exceção se inválido |
- Os testes estão disponíveis em
/Tests/DJOM.Tests.pas - Utilize DUnitX para executar os testes automaticamente
- Mapeamento declarativo básico
- WithDefault
- WithConverter
- Validate
- Suporte a tipos aninhados (
user.name) - Suporte a listas
- Object → JSON (exportação reversa)
- Suporte a atributos
[JsonField(...)] - Integração com
Spring.Expressions - Boss package no registry oficial
Contribuições são muito bem-vindas! Para contribuir:
- Faça um fork do projeto
- Crie sua branch:
git checkout -b minha-feature - Commit suas alterações:
git commit -m 'Adiciona nova funcionalidade' - Push para sua branch:
git push origin minha-feature - Abra um Pull Request
Este projeto é licenciado sob a MIT License – veja o arquivo LICENSE para detalhes.
Criado por Diego Ernani – mantenedor do canal The Delphi Developer.