アノテーションのみを使用してJacksonでフィールドを持たないオブジェクトをシリアル化することはできますか?私は私が手なし注釈と、そのようなオブジェクトをシリアル化しようとすると:ジャンクションでデータのないオブジェクトをシリアライズ
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class [redacted].SubjectObjectFeatureExtractor and no properties discovered to create BeanSerializer
私は、シリアライズデータを持たないように、クラスに注釈を付けるための方法を見ることなくlist of Jackson annotationsを検討しました。空のコンストラクタに@JsonCreator
を入れてみました(デシリアライゼーションアノテーションであるため動作しないと思います)。同じエラーが発生しました。 @JsonProperty
を置くアクセサまたはフィールドはありません。何か案は?
更新:これは、特定のタイプのデータに適用できる変換を表すオブジェクトのリストがあるためです。これらの変換の一部は、直列化する必要があるパラメータによって定義されますが、パラメータのないもの(問題のデータがないオブジェクト)です。私はこれらの変換のシーケンスを直列化および逆直列化することができるようにしたいと思います。また、クラス名がシリアル化されるようにDefaultTyping.NON_FINAL
を使用しています。
更新:例クラスは、私は特に私が正しくList<FeatureExtractor>
Sをデシリアライズすることができ、このためのJSONがある限り、どのように見えるかを気にしない
class ExtractSomeFeature implements FeatureExtractor<SomeOtherType> {
public void extractFeature(SomeOtherType obj, WeightedFeatureList output) {
// do stuff
}
}
だろう。
['com.mycompany.foo.ExtractSomeFeature', {}]
彼らはおそらくのようになりますので、FeatureExtractor
の他のサブクラスは、実際のパラメータを持っているでしょう:私の印象では、デフォルトのタイピング、予想されるJSONを使用するようなものになるだろうということです
[`com.mycompany.foo.SomeParameterizedFeature', {some actual JSON stuff in here}]
私は可能であればFeatureExtractor
サブクラスを作成するエンドユーザーからこのようなハッカーを隠したいと考えています。toJSONString()
メソッドの@JsonValue
を使用して{}
を返すことができます。
空の '{}'がほしいだけですか?それにはどんな目的がありますか? –
@SotiriosDelimanolis:あなたの質問に答えて質問を更新しました。 –
シリアル化したいオブジェクトのタイプと、生成されるJSONをどのように想定するかの例を挙げてください。 –