オブジェクトにYAMLファイルを解析しようとしています。YAML Jackson - 配列のアンカーキー
Online YAML Parserは、私が欲しいと思うように解析できると言っていますが、Jackson YAMLパーサーは私に欲しいものを私に与えることを拒否します。ここで
はYAMLファイルです:
- nom: "service1"
etats : &e1s1
- nom: "e1"
childs:
- nom: "e2"
childs:
- nom: "e3"
childs:
- &a
nom: "e5"
- nom: "e4"
childs:
- <<: *a
オンラインYAMLパーサーは "E4" と "E3" は子として "E5" を持っていることを私に伝えます。
しかし、私はジャクソンでこれを解析しようとすると、私は次のエラーを取得する:
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["<<"])
だから、私は誰もがジャクソンはそれを受け入れるところ、これを行うための方法を持っているかどうかを知りたいのですが?
更新
また、私はこの試みた:
- nom: "service1"
etats : &e1s1
- nom: "e1"
childs:
- nom: "e2"
childs:
- nom: "e3"
childs:
- &a
nom: "e5"
- nom: "e4"
childs:
- *a
しかし取得:
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])
ジャクソンYAMLモジュールがhttps://github.com/FasterXML/jackson-dataformats-text/tree/master/yamlに従ってSnakeYAMLを使用しているようですが、これはうまくいくでしょうが – Namoz
はい、低レベルエイリアスをまだ解決していないインターフェイス。 – flyx
私はあなたが正しいと思うので、代わりにYAMLBeansを使いました。 – Namoz