14

私はしばらくこれを探していましたが、答えが見つかりませんでした. それが最初であることを願っています...

サードパーティ ライブラリ ( IDMLlib ) を使用して、.idml 形式で保存されている Adob​​e InDesign ドキュメントから情報を抽出しています。コンテンツは簡単に読み取られ、必要なものがすべて含まれる「Idml」型のオブジェクトに保存されます。ここで、 Jackson JSONを使用して、このオブジェクトを Web クライアント (ブラウザー) に送信したいと考えています。

私は2つの問題にぶつかりました:

1) オブジェクト ツリーは循環参照でいっぱいです。注釈付きのミックスインを使用してこれを修正しました

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")  

これで、問題 2 で必要に応じて、多くの Mix-in を準備できました。

2) シリアル化するときに、オブジェクト固有の新しいエラーが発生し続けます。

--Output from testMethodsReturnsSomething--
| Failure:  testMethods(package.IdmlServiceTests)
|  com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: de.fhcon.idmllib.api.elements.Idml["document"]->de.fhcon.idmllib.api.elements.Document["tags"]->de.fhcon.idmllib.api.elements.tags.Tags["xmltagList"]->java.util.ArrayList[0]->de.fhcon.idmllib.api.elements.tags.XMLTag["tagColor"]->de.fhcon.idmllib.api.elements.typedefs.InDesignUIColorType["greenValue"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:218)
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:183)
at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:155)
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:533)
...

カスタムの NullValue/NullKey シリアライザーを作成しようとしましたが、NullPointerException には役立ちません。

これを処理する Mix-in で使用できる注釈はありますか?
または、このオブジェクトをシリアル化する別の方法はありますか?

4

4 に答える 4

4

これがまだ有効かどうかはわかりませんが、 のバージョンを変更することでこの問題を解決しましたcom.fasterxml.jackson.dataformat:jackson-dataformat-yaml。以前は 2.3.0 を使用していましたが、これと同じエラーが発生していました。私はそれを 2.7.8 に変更しましたが、現在は正常に動作しています。

于 2018-11-05T12:51:44.753 に答える
0

@com.fasterxml.jackson.annotation.JsonCreator でコンストラクターにタグを付けたクラスで NullPointerException に遭遇しました。タグを外すと、逆シリアル化 json -> mojo が動作しました。

于 2022-01-19T14:20:31.067 に答える