QuickLib icon indicating copy to clipboard operation
QuickLib copied to clipboard

Quick.YAML hibrid array makes empty lines?

Open latdev opened this issue 1 year ago • 1 comments

Something whong with TYamlArray when TYamlObject with TYamlString inside.

    procedure TfmMain.FormCreate(Sender: TObject);
    begin
        var doc := TYamlObject.Create;
        try
            doc.AddPair('String', 'Value1');
            doc.AddPair('Integer', TYamlInteger.Create(38));
            var arr1 := TYamlArray.Create;
                arr1.AddElement(TYamlString.Create('String1'));
                arr1.AddElement(TYamlString.Create('String2'));
                var arrObj1 := TYamlObject.Create;
                    arrObj1.AddPair('ArrObj1String1', 'more');
                    arrObj1.AddPair('ArrObj1String2', 'AndMore');
                    arr1.AddElement(arrObj1); // add arrObj to array
                doc.AddPair('TheArray', arr1); // add arr to doc
            Memo1.Lines.Text := doc.ToYaml;
        finally
            FreeAndNil(doc);
        end;
    end;

Memo1 text now looks like this.

String: Value1
Integer: 38
TheArray:


  - ArrObj1String1: more
    ArrObj1String2: AndMore

Awaited result is

String: Value1
Integer: 38
TheArray:
  - String1
  - String2
  - ArrObj1String1: more
    ArrObj1String2: AndMore

latdev avatar May 17 '24 05:05 latdev

Your yaml isn't supported because must be compatible with Delphi RTTI and Delphi Arrays to allow Serialization to/from Delphi classes and types. Arrays elements must be of same kind. I think you can try with something like this to avoid this limit:

String: Value1
Integer: 38
TheObject:
  TheArray1:
    - String1
    - String2
  TheArray2:
    - Arr2String1: more
    - Arr2String2: AndMore

exilon avatar Jul 03 '24 21:07 exilon