Closed EverNife closed 2 years ago
Seems related to #43.
With snakeyaml indicatorIndent
to 0 (i.e. with no list indentation at all) it works as expected:
...
peoples:
- *id001
- ==: org.simpleyaml.examples.Person
dni: 12345678B
name: Maria
birthYear: 1990
isAlive: true
This is valid YAML because -
character is considered to be indentation as per the YAML spec (see this comment).
This was the prior default behaviour, but it was changed in 1.7.1 to improve indentation consistency, so now indicatorIndent
is set to the same value as indent
(2 by default).
With newer versions of snakeyaml it seems to be a valid alternative for lists of maps using the same value for both indent and list indentation (snakeyaml issue 416), so I will update the default options to set this indentWithIndicator
option.
An indentList
option will be added to YamlConfigurationOptions
to change the list elements indentation if desired.
You are right!
...yml
peoples:
- *id001
- ==: org.simpleyaml.examples.Person
dni: 12345678B
name: Maria
birthYear: 1990
isAlive: true
Is a valid YML, But
peoples:
- *id001
-
==: org.simpleyaml.examples.Person
dni: 12345678B
name: Maria
birthYear: 1990
isAlive: true
is not!
I think for now is easier to add an option to YamlConfigurationOptions to set setIndicatorIndent And change the default value to 0 rather than the 2 that is now
I have just released 1.7.3 with the YamlConfigurationOptions::indentList
option to change the indicatorIndent
(list elements indentation).
It is still 2 by default, but now it should work properly for serialized objects and maps with the indentWithIndicator
change.
You can set yamlFile.options().indentList(0)
if you prefer having no extra indentation for your list elements.
Now your example output is valid YAML without any addition:
test:
people:
12345678A: &id001
==: org.simpleyaml.examples.Person
dni: 12345678A
name: John
birthYear: 1990
isAlive: true
peoples:
- *id001
- ==: org.simpleyaml.examples.Person
dni: 12345678B
name: Maria
birthYear: 1990
isAlive: true
Thankyou, its properly fixed :D
Saving a serializable List will generate a corrupted yml file.
For example, editing this test over here https://github.com/Carleslc/Simple-YAML/blob/master/Simple-Yaml/src/test/java/org/simpleyaml/examples/YamlSerializationExample.java#L41-L46
to this:
Will result in this yml.file
Which is not a valid YAMLfile! Its missing indentation on it. It should be something like this:
From what i tested, loading a serializable list after manully fixing this identation problem works normaly.