JackSon解析工具

JackSon解析工具

简介:

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

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

优势:

  1. 功能全面,提供多种模式的json解析方式,“对象绑定”使用方便,利用注解包能为我们开发提供很多便利。
  2. 性能较高,“流模式”的解析效率超过绝大多数类似的json包。

部分功能:

  在实际应用中,用的最多的是数据对象绑定的模式:

  1. 将一个Java对象序列化为json字符串;

  2. 将一串json字符串反序列化为java对象

  3. 将一串json字符串反序列化为Map集合。

---------------------------------------------------------------------

---------- 要提供getter方法

工程结构:

 

 

 

范例1: 将Java对象解析为JackSon字符串[使用writeValueAsString()方法]

Person.java:

package com.atguigu.jsonUtil.bean;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Person {
    // Person类的属性
    private String userName;
    private int age;
    private String telephone;
    
    // getter()方法
    public String getUserName() {
        return userName;
    }
    public int getAge() {
        return age;
    }
    public String getTelephone() {
        return telephone;
    }
    // 属性的构造方法: 用于实例化属性值
    public Person(String userName, int age, String telephone) {
        this.userName = userName;
        this.age = age;
        this.telephone = telephone;
    }
    
    // 其他的getter方法
    public String getAddress() {
        return "BeiJing";
    }
    public double getSalary() {
        return 10000.0;
    }
    
    // 测试
    public static void main(String[] args) throws JsonProcessingException {
        // 准备解析的Java对象
        Person person = new Person("Peter", 20, "12345678911");
        
        // 创建JackSon解析工具对象
        ObjectMapper mapper = new ObjectMapper();
        
        // 进行解析, 返回JSon字符串
        String jsonStr = mapper.writeValueAsString(person);
        
        // 输出JSon字符串
        System.out.println(jsonStr);
    }
}
输出结果:

{"userName":"Peter","age":20,"telephone":"12345678911","address":"BeiJing","salary":10000.0}

过滤掉某个属性: 只需在该属性的getter方法上添加注解@JsonIgnore即可

@JsonIgnore
    public String getTelephone() {
        return telephone;
    }

输出结果:

{"userName":"Peter","age":20,"address":"BeiJing","salary":10000.0}

Json字符串的key值对应着getter方法的后缀首字母小写:

修改getter方法:

public int getAge_1001() {
        return age;
    }

输出结果:

{"userName":"Peter","address":"BeiJing","age_1001":20,"salary":10000.0}

 

posted @ 2017-03-11 16:26  半生戎马,共话桑麻、  阅读(175)  评论(0)    收藏  举报
levels of contents