2015-07-21 13 views
1

所以我使用Jackson(和Mongojack一起)創建POJO的MongoDB文檔。我的數據庫看起來是這樣的:將嵌套文檔mongoDB序列化爲Jackson

Document{ id:1, Document2{ value1:1 value2:2}} 

我已經創建了一個POJO文檔和文檔2,這通常工作正常。問題是,在我的數據庫中的某些地方,文檔2具有的而不是一個嵌套的文檔和幾個值,從而導致這個錯誤

ERROR [2015-07-21 16:01:26,809] io.dropwizard.jersey.errors.LoggingExceptionMapper: Error handling a request: 3b38d500d7657352 
! com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.document1.document2] from Floating-point number (NaN); no one-double/Double-arg constructor/factory method 

! at [Source: [email protected]; pos: 1975] (through reference chain: com.document1["document2"]) 
! at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148) ~[jackson-databind-2.5.1.jar:2.5.1] 

不是真的知道什麼是最好的方式去解決這個值爲NaN是。我想我想要的是讓傑克遜認識到,如果Document2只是:nan而不是嵌套文檔,並且只是序列化它沒有值或什麼?

回答

0

如果你能保持你工作的數據合理一致,這是最好的。這就是說,有可能是破解辦法解決:

public class Document2 { 

    public Document2() { } 

    public Document2(double invalid) 
    { 
     System.out.print("invalid"); 
    } 

    public void setValue1(int value1) 
    { 
     System.out.println("value1 " + value1); 
    } 

    public void setValue2(int value2) 
    { 
     System.out.println("value2 " + value2); 
    } 
} 

在「幸福」的情況下,傑克遜將使用默認的構造函數,並給出設置的屬性。在NaN的情況下,它將找到單參數雙構造函數,並保留其他屬性。