J'essaye d'analyser un fichier YAML dans un objet.YAML Jackson - Anchor keys of Array
Même si Online YAML Parser me dit qu'il est analysable comme je le souhaite, le parseur de Jackson YAML refuse de me donner ce que je veux.
Voici le fichier YAML:
- nom: "service1"
etats : &e1s1
- nom: "e1"
childs:
- nom: "e2"
childs:
- nom: "e3"
childs:
- &a
nom: "e5"
- nom: "e4"
childs:
- <<: *a
en ligne YAML Parser me dit que "e4" et "e3" ont "e5" comme un enfant.
Cependant lorsque je tente d'analyser cela avec Jackson, je reçois l'erreur suivante:
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "<<" (class Etat), not marked as ignorable (4 known properties: "dependsOnAnotherService", "nom", "hasToken", "childs"])
at [Source: (File); line: 13, column: 21] (through reference chain: java.lang.Object[][0]->Service["etats"]->java.util.ArrayList[0]->Etat["childs"]->java.util.ArrayList[1]->Etat["childs"]->java.util.ArrayList[0]->Etat["<<"])
Alors, je voudrais savoir si quelqu'un a une façon de faire où Jackson va l'accepter?
Mise à jour
J'ai aussi essayé ceci:
- nom: "service1"
etats : &e1s1
- nom: "e1"
childs:
- nom: "e2"
childs:
- nom: "e3"
childs:
- &a
nom: "e5"
- nom: "e4"
childs:
- *a
Mais obtenez:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `Etat` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('a')
at [Source: (File); line: 13, column: 15] (through reference chain: java.lang.Object[][0]->Service["etats"]->java.util.ArrayList[0]->Etat["childs"]->java.util.ArrayList[1]->Etat["childs"]->java.util.ArrayList[0])
Je pensais que cela fonctionnerait parce que le module Jackson YAML semble utiliser SnakeYAML selon https://github.com/FasterXML/jackson-dataformats-text/tree/master/yaml – Namoz
Oui, mais il peut utiliser le bas niveau interface qui ne résout pas encore les alias. – flyx
Je pense que vous avez raison, j'ai donc utilisé YAMLBeans à la place, et cela fonctionne très bien. – Namoz