2011-12-01 91 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。