こんにちは私はjacksonを使用して保護されたコンストラクタでクラス(SimpleExpression)をシリアライズしてデシリアライズしようとしています。 gsonを使うと問題はありませんが、jacksonは保護されたコンストラクタを処理できないようです。 mixinアノテーションを使ってみましたが、うまくいきませんでした。シリアル化は問題なく動作します。ジャクソンスロー:Jacksonと保護されたコンストラクタをデシリアライズ
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type
ヘルプがありますか? マイコード:
private static SimpleExpression create(String json) throws JsonParseException, JsonMappingException, IOException
{
ObjectMapper mapper = new ObjectMapper().setVisibility(PropertyAccessor.ALL, Visibility.ANY);
SimpleExpression sp = null;
sp = mapper.readValue(json, SimpleExpression.class);
return sp;
}
SimpleExpressionクラスは、私はゲッターとセッターをomitingよ。
public class SimpleExpression implements Criterion
{
private static final long serialVersionUID = 1L;
private final String propertyName;
private final Object value;
private boolean ignoreCase;
private final String op;
private final String type;
protected SimpleExpression(String propertyName, Object value, String op)
{
this.propertyName = propertyName;
this.value = value;
this.op = op;
this.type = value.getClass().getName();
}
protected SimpleExpression(String propertyName, Object value, String op, boolean ignoreCase)
{
this.propertyName = propertyName;
this.value = value;
this.ignoreCase = ignoreCase;
this.op = op;
this.type = value.getClass().getName();
}
}
あなたは、SimpleExpression' 'のクラスDEFが含まれている必要があり、それがうまく働きました。 – StaxMan
私はそれを忘れてしまった。 –