Delphi 数据集转Json字符串 函数

2020-08-21
  • 函数类型: 自定义函数

  • 函数说明:

数据集转Json字符串


  • 代码如下:



function datasetToJsonStr(dataset: TDataSet): string; // {"data":[{"field1":value1,"field2":value2}]}; var   i: Integer;   obj, childobj: TJsonObject;   field: TField;   blob: TStringStream; begin   Result := '{"result":"false"}';   if (dataset = nil) or (not dataset.Active) then     Exit;   obj := TJsonObject.Create;   try     obj.A['data'];     dataset.First;     while not dataset.Eof do     begin       childobj := obj.A['data'].AddObject;       for i := 0 to dataset.FieldCount - 1 do       begin         field := dataset.Fields[i];         if field.IsNull then           childobj.S[field.FieldName] := ''         else         begin           case field.datatype of             ftBoolean:             childobj.B[field.FieldName] := field.AsBoolean;             ftSmallint, ftInteger, ftWord, ftAutoInc:             childobj.I[field.FieldName] := field.AsInteger;             ftLargeint:             childobj.L[field.FieldName] := TLargeintField(field).AsLargeInt;             ftCurrency, ftFloat, ftBCD:             childobj.F[field.FieldName] := field.AsFloat;             ftTimeStamp, ftDate, ftTime, ftDateTime:             childobj.D[field.FieldName] := field.AsDateTime;             ftString, ftFixedChar, ftMemo, ftWideString:             childobj.S[field.FieldName] := field.AsString;             ftBytes, ftVarBytes, ftBlob, ftGraphic, ftOraBlob, ftOraClob:             begin               blob := TStringStream.Create('');               try                 TBlobField(field).SaveToStream(blob);                 childobj.S[field.FieldName] := blob.DataString;               finally               blob.Free;               end;             end;           end;         end;       end; // end for       dataset.Next;     end; // end while     Result := obj.ToString;   finally     obj.DisposeOf;   end; end;



  • 用法示例:

无 



《学习大师原创文档,请勿转载,侵权必究》





阅读1124