ho il seguente metodo che uso per ottenere l'oggetto convertito in yaml
rappresentazione (che posso ad esempio la stampa di consolarla.)Java SnakeYaml - impedire il dumping nomi di riferimento
@Nonnull
private String outputObject(@Nonnull final ObjectToPrint packageSchedule) {
DumperOptions options = new DumperOptions();
options.setAllowReadOnlyProperties(true);
options.setPrettyFlow(true);
return new Yaml(new Constructor(), new JodaTimeRepresenter(), options).dump(ObjectToPrint);
}
Tutto è buono, ma per qualche oggetto contenuto nella struttura ObjectToPrint
Ricevo qualcosa come il nome di riferimento e non il contenuto dell'oggetto reale, ad es.
!!com.blah.blah.ObjectToPrint
businessYears:
- businessYearMonths: 12
ppiYear: &id001 {
endDate: 30-06-2013,
endYear: 2013,
startDate: 01-07-2012,
startYear: 2012
}
ppiPeriod:
ppiYear: *id001
endDate: 27-03-2014
startDate: 21-06-2013
units: 24.000
number: 1
Come si può vedere dall'esempio precedente ho ppiYear
oggetto stampato (contrassegnato come $id001
) e lo stesso oggetto viene utilizzato in ppiPeriod
ma solo il nome di riferimento viene stampato lì, non il contenuto dell'oggetto. Come stampare il contenuto dell'oggetto ogni volta che utilizzo quell'oggetto all'interno della mia struttura, che voglio convertire in yaml (ObjectToPrint
). PS. Sarebbe bello non stampare il nome di riferimento (&id001
) ma questo non è fondamentale
Ho appena commentato ** if (this.serializedNodes.contains (node)) { this.emitter.emit (new AliasEvent (tAlias, null, null)); } else {** dal metodo serializeNode e ** anchorNode (nodo); ** dal metodo serialize. Questo ha impedito di creare ancore e alias. – Ajeesh
Questo è ciò che l'OP chiedeva :-). È necessario implementare myHook correttamente per disattivare solo il rilevamento ref per alcune classi. –