



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; |
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; |
Caso criei uma melhoria ou tenha alguma sugestão, deixe o seu comentário!