Delphi中的Dataset是一個很常見的數據處理對象,在處理數據時經常需要將Dataset轉成JSON格式的數據。
Dataset轉JSON的方法有很多,可以手寫代碼轉換,但這個過程非常耗時。現在有很多第三方的JSON庫可以使用,其中比較常用的是SuperObject。
在使用SuperObject時,我們需要遍歷Dataset遍歷每條記錄,并將記錄的值添加到一個JSON對象中。以下是一個示例:
procedure DatasetToJsonString(Dataset: TDataSet; var Json: ISuperObject); var Field: TField; Rows: ISuperArray; Row: ISuperObject; begin // 遍歷記錄 Dataset.First; Rows := TSuperArray.create; while not Dataset.Eof do begin Row := TSuperObject.create; // 遍歷每個字段 for Field in Dataset.Fields do begin // 根據字段類型添加到JSON對象 case Field.DataType of ftInteger, ftSmallint, ftFloat: Row.I[Field.FieldName] := Field.AsInteger; ftBoolean: Row.B[Field.FieldName] := Field.AsBoolean; ftDate, ftDateTime: Row.S[Field.FieldName] := FormatDateTime('yyyy-mm-dd', Field.AsDateTime); else Row.S[Field.FieldName] := Field.AsString; end; end; Rows.Add(Row); Dataset.Next; end; Json := TSuperObject.create; Json.A['items'] := Rows; end;
上述代碼中使用了SuperObject的ISuperObject和ISuperArray接口,分別表示JSON對象和JSON數組。遍歷每條記錄時,通過遍歷字段根據不同的數據類型將字段值添加到JSON對象中。最終將JSON數組添加到JSON對象中,即可生成完整的JSON格式數據。
以上是將Delphi Dataset轉JSON的常規方法,具體的實現方式可以根據實際需求進行調整,例如自定義日期格式等。