Delphi 数据集转Json字符串 函数

  • 函数类型: 自定义函数

  • 函数说明:

数据集转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;



  • 用法示例:

无 



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





联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678