fcl-json jsonConf:保存json格式化?

时间:2015-08-02 15:21:48

标签: lazarus fpc

我通过jsonConf(TJsonConfig)保存文件,json文件长1行。 (许多钥匙都在里面)。如何保存格式化?很喜欢网络。

Lazarus 1.4.2。

1 个答案:

答案 0 :(得分:1)

您必须使用正确的参数调用受保护成员FJSON的FormatJSON。要访问FJSON,您有多种选择(类助手,强制转换为虚拟子类或创建真正的子类)。

因为TJsonConfig析构函数调用flush(),所以很可能最后用默认格式覆盖该文件。所以最好的选择是子类TJsonConfig并覆盖析构函数而不调用inherited:

destructor TMyJSONConfig.Destroy;
var
  data: string;
  str: TMemoryStream;
begin
  if Assigned(FJSON) then
  begin
    data := FJSON.FormatJSON(); // here you can change default parameters
    with TMemoryStream.Create do try
      Write(data[1], Length(data));
      SaveToFile(FFilename);
    finally
      free;
    end;
    FreeAndNil(FJSON); 
  end;
  // skip flush() in inherited, avoid to save again the file.
  TComponent(Self).Destroy;
end;