【问题标题】:jackson mini json to object classjackson mini json 到对象类
【发布时间】:2011-12-02 00:48:56
【问题描述】:

我的项目中添加了“jackson-mini-1.9.2.jar”(不是“jackson-all-1.9.2.jar”), 我想将 json 转换为对象类。

使用“jackson-all-1.9.2.jar”,我们可以使用“ObjectMapper”来获取。 但是使用“jackson-mini-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 对象 在 org.codehaus.jackson.JsonParser.readValueAs(未知来源) 在 TestJackson.main(TestJackson.java:21)

【问题讨论】:

    标签: json jackson


    【解决方案1】:

    您可以实现自己的ObjectCodec,然后通过调用JsonFactory#setCodec(myCodec) 将其注册到JsonFactory。

    或者(更简单!),只需获取 jackson-mapper-1.9.2.jar 并将其添加到您的类路径中,这样您就可以使用默认的 ObjectMapper

    【讨论】:

    • 是不是说:jackson-mini不包含“json to object class”的功能,我们应该创建我们的类扩展ObjectCodec,来实现它,它看起来像jackson-all中的ObjectMapper。
    • 是的,完全正确。 Jackson-mini 仅包含来自 jackson-core 的类。这不包括 ObjectMapper。
    • 非常感谢~~~非常感谢!好~~~好运!
    • 我的上帝!"jackson-mini" + "jackson-mapper" 不起作用!java.lang.ClassNotFoundException: org.codehaus.jackson.util.TokenBuffer;"jackson-core-asl" + "jackson-mapper-asl" 可以工作,如果有其他方法可以使其尺寸更小?
    • 如果您不需要数据绑定,Jackson mini 被定义为最小有用的子集;针对资源受限的用例。 TokenBuffer 被故意遗漏了,因为它是一个相当大的类——如果您确实需要数据绑定,请使用常规 jar。在某种程度上,这是一个打包挑战:TokenBuffer 应该是映射器包的一部分,而不是核心包;对于 Jackson 2.0,这可以修复。
    【解决方案2】:

    如果你想使用数据绑定,不要使用 mini jar。它仅意味着作为使用 Streaming Parsing (JsonParser, JsonGenerator) 的最小 jar。

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 1970-01-01
      • 2020-03-18
      • 1970-01-01
      • 2020-01-16
      • 2012-07-25
      • 2022-01-10
      • 1970-01-01
      • 2021-03-05
      相关资源
      最近更新 更多