Como ler um json de um campo Blob?
Olá pessoa!
Seguidamente gosto de fazer testes com o que há disponível na ferramenta.
Nesta linha me deparei com a seguinte situação:
Precisava fazer a leitura de um json que estava salvo em um campo Blob,
como posso fazer a leitura do mesmo?
Para resolver o problema, criei o seguinte método:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| function ExtrairJson(DataSet: TDataSet; FieldName : string) : string;
var
FMemoryStream : TMemoryStream;
FStringStream : TStringStream;
vtext : string;
I : Integer;
begin
if not DataSet.FieldByName(FieldName).IsEmpty then
begin
FMemoryStream := TMemoryStream.Create;
FStringStream := TStringStream.Create( DataSet.FieldByName(FieldName).AsString , TEncoding.ASCII);
TNetEncoding.Base64.Decode(FStringStream, FMemoryStream);
FMemoryStream.Position := 0;
SetString(vtext, PAnsiChar(FMemoryStream.Memory), FMemoryStream.Size);
{ Retornando }
Result := vtext;
FMemoryStream.Free;
FStringStream.free;
end;
end; |
function ExtrairJson(DataSet: TDataSet; FieldName : string) : string;
var
FMemoryStream : TMemoryStream;
FStringStream : TStringStream;
vtext : string;
I : Integer;
begin
if not DataSet.FieldByName(FieldName).IsEmpty then
begin
FMemoryStream := TMemoryStream.Create;
FStringStream := TStringStream.Create( DataSet.FieldByName(FieldName).AsString , TEncoding.ASCII);
TNetEncoding.Base64.Decode(FStringStream, FMemoryStream);
FMemoryStream.Position := 0;
SetString(vtext, PAnsiChar(FMemoryStream.Memory), FMemoryStream.Size);
{ Retornando }
Result := vtext;
FMemoryStream.Free;
FStringStream.free;
end;
end;
Claro que é possível criar uma função que retorne um TJsonValue,
até os parâmetros podem ser substituídos por um aField : TBlobField, mas ai deixo a
critério de vocês criarem a solução que melhor se aplique a sua necessidade.
Vamos ao exemplo de uso:
1
2
3
4
| procedure Button1Click(Sender : TObject);
begin
Memo1.Text := ExtrairJson(MeuDataSet, 'CAMPO_BLOB');
end; |
procedure Button1Click(Sender : TObject);
begin
Memo1.Text := ExtrairJson(MeuDataSet, 'CAMPO_BLOB');
end;
Caso criei uma melhoria ou tenha alguma sugestão, deixe o seu comentário!
-
Giovani Da Cruz
-
6.509 views
- 0 comentários
- 26 de maio de 2017
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo