Jackson介绍

原文链接:http://www.dubby.cn/detail.html?id=9068

Jackson作为一个知名,并且经典的Java平台的JSON库,有人说它是最好的JSON解析工具,或者只是一个简单的还行的JSON解析库,不管如何Jackson都是一个值得一学,值得一用的JSON处理库。

Jackson不仅支持流式处理json,还支持数据绑定(POJO和JSON之间的相互转化),甚至还拓展了很多其他第三方库所支持的数据格式(如:Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, XMLYAMLGuava, Joda, PCollections)。

Jackson的三个核心模块:

  • jackson-core:定义了低级的流式API,包括了JSON处理细节。
  • jackson-annotations:包含了Jackson的注解。
  • jackson-databind:实现了对象和JSON之间的转换,这个包依赖上面两个包。

如何解析JSON:

尽管有很多种拆分JSON并解析的方法,但是可以归纳成3种:

  1. 迭代:对事件流(Jackson称之为Token流)的迭代
  2. 数据绑定:将Json数据绑定到对象
  3. 遍历树:构建一个树结构并使用合适的方法遍历它

对应的Java的API:

  1. SAX和Stax。这个提供了一些基本的API来遍历事件流。其中,SAX是主动把event推给你(push),Stax是让你可以主动遍历这个事件流(pull)。一个是push,一个是pull,但是事件流都是一样的,只是表现方式不同。提供事件callback的SAX,主动遍历event的Stax,还有一个是Stax Cursor API(游标)。
  2. JAXB是数据绑定的标准; 虽然有n + 1个替代品(Jibx,XMLBeans,Castor等等),但它们都是这样做的:将(Java)对象转换为xml,反之亦然,其中一些方便而有效,另一些则不如此。
  3. DOM是“最标准的”API,它定义了树结构; 但是与数据绑定一样,还有多种(更好的)替代方案(XOM,JDOM,DOM4j)。您可以逐节点遍历它,也可以使用XPath。

虽然上面说的都是XML的,但是我们讨论的是JSON啊!事实证明,格式不重要,重要的是这种解析的思想。

对应了Jackson提供的三个类:

  1. 核心包(jackson-core)包含JsonParser和JsonGenerator,它们允许迭代令牌(Jackson喜欢说成令牌token,而不是事件event)。
  2. ObjectMapper实现了数据绑定功能:JSON和Object之间的相互转换。
  3. TreeMapper是把JSON字符串构造成一个树,其中包含了节点(JsonNode)和子节点(JsonNode)。

和Jackson 1.x的区别:

  • 使用Maven作为构建工具,而不是Ant
  • 注释划分到一个单独的包
  • 包改成了com.fasterxml.jackson.core(原来是 org.codehaus.jackson)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值