Advertisement
arirod

convert dataset to json format

Mar 6th, 2022
1,623
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.38 KB | None | 0 0
  1. unit writedatasetJSONFormat_helper;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes,
  9.   SysUtils,
  10.   DB,
  11.   SQLDB,
  12.   jsonscanner,
  13.   jsonparser,
  14.   fpsimplejsonexport;
  15.  
  16. type
  17.   TQueryDataToJSON = class helper for TSQLQuery
  18.   private
  19.   public
  20.     function WriteJSONFormat : string;
  21.   end;
  22.  
  23. implementation
  24.  
  25. function TQueryDataToJSON.WriteJSONFormat: string;
  26. var
  27.   LStream: TStringStream;
  28.   LJSONExp: TSimpleJSONExporter;
  29.   LParser : TJSONParser;
  30.   memText : string;
  31. begin
  32.   LStream  := TStringStream.Create('');
  33.   LJSONExp := TSimpleJSONExporter.Create(nil);
  34.   with LJSONExp do
  35.   begin
  36.     FormatSettings.DateFormat := 'YYYY-MM-DD';
  37.     FormatSettings.DateTimeFormat := 'YYYY-MM-DD hh:mm:ss';
  38.     FormatSettings.DecimalSeparator := '.';
  39.     FormatSettings.IndentSize:= 5;
  40.     FormatSettings.ColumnFormat := cfObject;
  41.     FormatSettings.RowFormat := rfArray;
  42.     FileName := 'ConvertJSON';
  43.   end;
  44.   //
  45.   try
  46.     try
  47.       LJSONExp.Dataset := Self;
  48.       LJSONExp.ExportToStream(LStream);
  49.     except
  50.       on Exception do
  51.       begin
  52.         FreeAndNil(LJSONExp);
  53.       end;
  54.     end;
  55.  
  56.   finally
  57.     memText := StringReplace(LStream.DataString, ';', ',', [rfReplaceAll]);
  58.     memText := concat(LeftStr(memText, Length(memText) - 6),']');
  59.     LParser:=TJSONParser.Create(memText, [joUTF8]);
  60.     Result := LParser.Parse.FormatJSON([], 2);
  61.   end;
  62.  
  63. end;
  64.  
  65. end.
  66.  
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement