2017-12-23 22 views
1

JavaオブジェクトをJsonNodeに変換しようとしています。リクエストごとにSerializationConfigが変更されたJavaオブジェクトをJsonNodeに変換する

mapper.setConfig(mapper.getSerializationConfig().with(contextAttributes)); 
mapper.valueToTree(object); 

objectMapperインスタンスは1つあります。 したがって、リクエストごとにobjectMapperのシリアル化設定に変更があります。これは、1つのスレッドが前のスレッドによって設定されたマッパーの設定を上書きする可能性があるため、並行性の問題を引き起こしています。リクエストごとに新しいObjectMapperインスタンスを作成することはできません。私はObjectMapperに従ってコピーすることもできません。ObjectMapperのコピーを作成するjavadocは、新しいインスタンスを作成するのと同じくらい高価です。

変換するにはどうすればよいですか?

+0

質問がありますか? – CGritton

+0

変換を行う他の方法があるかどうか確認したい。 – user3810386

答えて

0

これは、そのjavadocをに従ってあなたのObjectMapperからインスタンスを作成し、追加のシリアル化パラメータ

ごとのシリアル化設定に使用

あるObjectWriterを使用する場合、のように思えます

ObjectWriter writer = mapper.writer(contextAttributes); 
writer.writeValue(responseOutputStream, object); 

残念なことに、クラスにはJsonNodeに出力を書き込む簡単な方法が含まれていません。結果が文字列ではないことが本当に必要な場合は、次のようなツリーにそれを読むことができます:

StringWriter sw = new StringWriter(); 
writer.writeValue(sw, object); 

JsonNode jsonNode = mapper.readTree(sw.toString()); 
関連する問題