原文http://blog.csdn.net/nomousewch/article/details/8955796

  • 概述

Jackson库(http://jackson.codehaus.org),是基于java语言的开源json格式解析工具,整个库(使用最新的2.2版本)包含3个jar包:

  1. jackson-core.jar——核心包(必须),提供基于“流模式”解析的API。
  2. jackson-databind——数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。
  3. jackson-annotations——注解包(可选),提供注解功能。
  • Jackson的优势

相对于java json解析的其他库,诸如json-lib、gson包,Jackson具有以下优点:

  1. 功能全面,提供多种模式的json解析方式,“对象绑定”使用方便,利用注解包能为我们开发提供很多便利。
  2. 性能较高,“流模式”的解析效率超过绝大多数类似的json包。
  • 重要API
  1. 核心包:JsonPaser(json流读取),JsonGenerator(json流输出)。
  2. 数据绑定包:ObjectMapper(构建树模式和对象绑定模式),JsonNode(树节点)。
  • 简单例子

在实际应用中,用的最多的是数据对象绑定的模式,即将一个对象序列化为json字符串和将一串json字符串反序列化为java对象或Map。

Person类:

[java] view
plain
copy

 
  1. public class Person {
  2. private String name;
  3. private int age;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public int getAge() {
  11. return age;
  12. }
  13. public void setAge(int age) {
  14. this.age = age;
  15. }
  16. public Person(String name, int age) {
  17. this.name = name;
  18. this.age = age;
  19. }
  20. public Person() {
  21. }
  22. }

测试类:

[java] view
plain
copy

 
  1. public class Demo {
  2. public static void main(String[] args) {
  3. // writeJsonObject();
  4. // readJsonObject();
  5. // readJsonMap();
  6. }
  7. // 直接写入一个对象
  8. public static void writeJsonObject() {
  9. ObjectMapper mapper = new ObjectMapper();
  10. Person person = new Person("nomouse", 25);
  11. try {
  12. mapper.writeValue(new File("c:/person.json"), person);
  13. } catch (JsonGenerationException e) {
  14. e.printStackTrace();
  15. } catch (JsonMappingException e) {
  16. e.printStackTrace();
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. // 直接将一个json转化为对象
  22. public static void readJsonObject() {
  23. ObjectMapper mapper = new ObjectMapper();
  24. try {
  25. Person person = mapper.readValue(new File("c:/person.json"),
  26. Person.class);
  27. System.out.println(person.getName() + ":" + person.getAge());
  28. } catch (JsonParseException e) {
  29. e.printStackTrace();
  30. } catch (JsonMappingException e) {
  31. e.printStackTrace();
  32. } catch (IOException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. // 直接转化为map
  37. public static void readJsonMap() {
  38. ObjectMapper mapper = new ObjectMapper();
  39. try {
  40. // 需要注意的是这里的Map实际为一个LikedHashMap,即链式哈希表,可以按照读入顺序遍历
  41. Map map = mapper.readValue(new File("c:/person.json"), Map.class);
  42. System.out.println(map.get("name") + ":" + map.get("age"));
  43. } catch (JsonParseException e) {
  44. e.printStackTrace();
  45. } catch (JsonMappingException e) {
  46. e.printStackTrace();
  47. } catch (IOException e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. }

Json解析工具Jackson(简单应用)的更多相关文章

  1. Json解析工具Jackson(使用注解)

    原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...

  2. Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解

    Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解 @JsonIgnoreProperties 此注解是类注解,作用是json序列化时将Javabean中的一 ...

  3. JSON解析工具——Jackson的简单使用

    什么是Jackson 可以轻松实现Java对象与JSON字符串的转换 准备工作:导包 Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jac ...

  4. [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson

    JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...

  5. JSON解析工具比较,主要GSON和FastJSON

    JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...

  6. JSON 解析工具的封装(Java)

    JSON 解析工具的封装(Java) 一直想有一个属于自己的JSON工具,今天终于弄好了..... 1.添加pom依赖包 <!--json解析--> <dependency> ...

  7. java后台常用json解析工具问题小结

    若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...

  8. 自定义Json解析工具

    此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...

  9. Gson json解析工具

    json 解析工具 ,谷歌出品 对象转换字符串 HashMap<String,String> hashMap = new HashMap<String, String>();  ...

随机推荐

  1. Centos 7 开启端口

    CentOS 7 默认没有使用iptables,所以通过编辑iptables的配置文件来开启80端口是不可以的 CentOS 7 采用了 firewalld 防火墙 如要查询是否开启80端口则: 1 ...

  2. 小白Linux入门 二

    参考: http://edu.51cto.com/lesson/id-11222.html CPU中有计算单元 控制单元.它通过桥接芯片与存储器进行匹配 其中北桥是高速 南桥是低速 包括IDE USB ...

  3. jQuery Mobile案例,最近用Moon.Web和Moon.Orm做了一套系统

      一.简介 先说说,我们的主题.jQuery Mobile,最近用Moon.Web和Moon.Orm做了一套系统 jQuery Mobile是jQuery 在手机上和平板设备上的版本.jQuery ...

  4. 【原创】kafka admin源代码分析

    admin包定义了命令行的一些实现 一.AdminOperationException.scala 一个异常类,表示执行admin命令时候抛出的异常 二.AdminUtils.scala admin一 ...

  5. [Asp.net 5] Logging-新日志系统目录

    楼主有个美好的愿望——把asp.net 5所有能看懂的代码一一呈现给大家(比如C++,楼主就看不懂).现在已经做完了依赖注入.多语言.配置文件三部分,比较基础的日志就成为了楼主的下一个目标.下面是楼主 ...

  6. asp.net获取客户端浏览器及主机信息

    在线预览效果:http://tool.hovertree.com/info/client/ 其中aspx页面的控件代码: <asp:ListBox runat="server" ...

  7. ibatis 和 mybatis

    ibatis 在daoImpl 层 继承 SqlMapClientDaoSupport  实现 dao 层的接口. this.getSqlMapClientTemplate().queryForObj ...

  8. MATLAB连接ACCESS数据库

    1.创建Windows系统ODBC数据源<打开控制面板----管理工具----ODBC数据源(32位或64位)----添加----安装数据源的驱动程序Microsoft Access Drive ...

  9. java基础知识总结(2)

    抽象方法的定义语法: 访问修饰符 abstract <返回类型> <方法名>(参数列表):   在语法中:abstract关键字表示该方法被定义为抽象方法   抽象方法和普通方 ...

  10. 复杂的xml转化为java实体

    一.样例一: 以根据订单号向支付宝查询支付是否成功为例(成功信息) 失败信息: <?xml version="1.0" encoding="utf-8"? ...