FOUND解決技術問題對於誰將會被卡住像我的人!:爲了處理第三方Java或Scala的對象爲傑克遜反序列化 ,您可以使用混入(但您需要重新配置傑克遜映射器或用戶模塊) 或 您可以簡單地創建一個名爲MyClassDeserializer的類,該類擴展JsonDeserializer 並使用@JsonDeserialize(using = MyClassDeserializer.class)註釋。jongo /傑克遜反序列化scala.option在Java
爲例:
它真的很簡單,就像一個魅力! :)我遇到一些不好的時間,試圖用傑克遜Jongo
public class User implements Identity{
@JsonProperty("_id")
private String id;
public Option<String> email;
}
選項是一個抽象類,我真的很新的這反序列化這個
public class User implements Identity{
@JsonProperty("_id")
private String id;
@JsonDeserialize(using = OptionDeserializer.class)
public Option<String> email;
}
public class OptionDeserializer extends JsonDeserializer<Option> {
@Override
public Option deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
//code can be improved
ObjectCodec oc = jsonParser.getCodec();
JsonNode node = oc.readTree(jsonParser);
return Option.apply(node.get("email").getText());
}
}
好傢伙,有沒有實際上告訴傑克遜如何翻譯它的方法?
這個用戶對象被正確保存到mongo,但不能被讀取:/我花了這麼多小時試圖瞭解你們是我的最後一招! 謝謝(繼續尋找)
造成的:com.fasterxml.jackson.databind.JsonMappingException:能 無法構建scala.Option,問題的實例:抽象類型要麼 需要映射到具體類型,已經自定義解串器,或者被 實例化,附加類型信息 at [來源:[email protected]; POS: 237](通過參考鏈:models.User [ 「電子郵件」])
什麼是「Option」類,它是否包含默認的構造函數? –
你好Michal Option類是一個Scala類:/我使用第三部分liobrary,在我的Java項目中使用scala,並且我需要序列化一個包含Option字段的對象。 –
thx michal我找到了問題的解決方案,並將其發佈在我的第一篇文章中,供未來用戶使用 –