2011-12-01 111 views
3

我在我的項目中添加了「jackson-mini-1.9.2.jar」(不是「jackson-all-1.9.2.jar」), 我想將json轉換爲對象類。傑克遜微型json到對象類

使用「jackson-all-1.9.2.jar」,我們可以使用「ObjectMapper」來獲取它。 但使用「傑克遜迷你1.9.2.jar」,如何做到這一點?

如果我寫的後續代碼」

String json = "{\"name\" : {\"first\" : \"Joe\", \"last\" : \"Sixpack\" }, \"gender\" : \"MALE\", \"verified\" : false, \"userImage\" : \"Rm9vYmFyIQ==\" }"; 
    JsonFactory f = new JsonFactory(); 
    JsonParser jp = f.createJsonParser(json); 

    User user = jp.readValueAs(User.class); 

的結果是這樣的:

異常線程‘main’java.lang.IllegalStateException:沒有ObjectCodec解析器定義,無法反序列化JSON到Java在TestJackson.main對象 在org.codehaus.jackson.JsonParser.readValueAs(來源不明) (TestJackson.java:21)

回答

3

您可以實現自己的ObjectCodec一個然後通過調用JsonFactory#setCodec(myCodec)將其註冊到JsonFactory。

或者(更容易!),只需抓住jackson-mapper-1.9.2.jar並將其添加到您的類路徑中,以便您可以使用默認的ObjectMapper

+1

是不是意味着:jackson-mini沒有包含函數「json to object class」,我們應該創建我們的類extends ObjectCodec來實現它,它看起來像是在jackson-all中的ObjectMapper。 – YETI

+0

是的,確切地說。傑克遜迷你只包含傑克遜核心的類。這不包括ObjectMapper。 –

+0

謝謝你~~~好多!好~~~好運! – YETI

1

如果你想使用數據綁定,不要使用迷你jar。它只是使用Streaming Parsing(JsonParser,JsonGenerator)儘可能小的jar。