dcjsonconfig.pas 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. unit DCJsonConfig;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, fpJson;
  6. type
  7. { TJsonConfig }
  8. TJsonConfig = class
  9. private
  10. FRoot: TJSONObject;
  11. public
  12. constructor Create;
  13. destructor Destroy; override;
  14. procedure SaveToFile(const FileName: String);
  15. procedure LoadFromFile(const FileName: String);
  16. property Root: TJSONObject read FRoot;
  17. end;
  18. implementation
  19. uses
  20. DCClassesUtf8;
  21. { TJsonConfig }
  22. constructor TJsonConfig.Create;
  23. begin
  24. FRoot:= TJSONObject.Create;
  25. end;
  26. destructor TJsonConfig.Destroy;
  27. begin
  28. inherited Destroy;
  29. FRoot.Free;
  30. end;
  31. procedure TJsonConfig.SaveToFile(const FileName: String);
  32. begin
  33. with TStringListEx.Create do
  34. try
  35. Text:= FRoot.FormatJSON([foDoNotQuoteMembers]);
  36. SaveToFile(FileName);
  37. finally
  38. Free;
  39. end;
  40. end;
  41. procedure TJsonConfig.LoadFromFile(const FileName: String);
  42. var
  43. AStream: TFileStreamEx;
  44. begin
  45. AStream:= TFileStreamEx.Create(FileName, fmOpenRead or fmShareDenyNone);
  46. try
  47. FreeAndNil(FRoot);
  48. FRoot:= GetJSON(AStream, True) as TJSONObject;
  49. finally
  50. AStream.Free;
  51. end;
  52. end;
  53. end.