Jackson框架

Jackson框架

一、Jackson简介

       Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。

二、Jackson使用

2.1、ObjectMapper的使用

    建立两个类Address、Employee

public class Address {
    private String street;
    private String city;
    private int zipCode;
    public String getStreet() {
        return street;
    }
    public void setStreet(String street) {
        this.street = street;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
    public int getZipCode() {
        return zipCode;
    }
    public void setZipcode(int zipcode) {
        this.zipCode = zipcode;
    }
    @Override
    public String toString(){
        return getStreet() + ", "+getCity()+", "+getZipCode();
    }
}

public class Employee {
    private int id;
    private String name;
    private int age;
    private BigDecimal salary;
    private String designation;
    private Address address;
    private long[] phoneNumbers;
    private Map<String, String> personalInformation;
    /*Getter and Setter Methods*/
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public BigDecimal getSalary() {
        return salary;
    }

    public void setSalary(BigDecimal salary) {
       this.salary = salary;
    }
    public String getDesignation() {
        return designation;
    }

    public void setDesignation(String designation) {
        this.designation = designation;
    }
    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
    public long[] getPhoneNumbers() {
        return phoneNumbers;
    }

    public void setPhoneNumbers(long[] phoneNumbers) {
        this.phoneNumbers = phoneNumbers;
    }
    public Map<String, String> getPersonalInformation() {
        return personalInformation;
    }
    public void setPersonalInformation(Map<String, String> personalInformation) {
        this.personalInformation = personalInformation;
    }
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("ID: " + getId() + "\n");
        sb.append("Name: " + getName() + "\n");
        sb.append("Age: " + getAge() + "\n");
        sb.append("Salary: $" + getSalary() + "\n");
        sb.append("Designation: " + getDesignation() + "\n");
        sb.append("Phone Numbers: " + Arrays.toString(getPhoneNumbers()) + "\n");
        sb.append("Address: " + getAddress() + "\n");
        sb.append("Personal Information:" + getPersonalInformation() + "\n");
        return sb.toString();

    }

}

json格式的文件data.json如下:

{
  	 "id" : 123,
 	 "name" : "Henry Smith",
 	 "age" : 28,
  	 "salary" : 2000,
 	 "designation" : "Programmer",
  	 "address" : {
    	"street" : "Park Avn.",
    	"city" : "Westchester",
    	"zipcode" : 10583
 	 },
  	"phoneNumbers" : [ 654321, 222333 ],
  	"personalInformation" : {
    	"gender" : "Male",
    	"maritialstatus" : "Married"
	}
}

1、从文件中读取json或向文件中写入json

//Jackson读取json文件,将json数据转化为对象
	public void testJsonToObject() throws JsonParseException, JsonMappingException, IOException{
        ObjectMapper objectMapper = new ObjectMapper();
        Employee emp = objectMapper.readValue(new File("src/data.json"), Employee.class);
        System.out.println(emp.toString());
	}
	//Jackson将java对象转化为json字符串并输出
	public void testObjectTojson() throws JsonParseException, JsonMappingException, IOException{
        ObjectMapper objectMapper = new ObjectMapper();
        Employee emp = objectMapper.readValue(new File("src/data.json"), Employee.class);
        //将对象转化为json格式,并存入到文件中
        objectMapper.writeValue(new File("src/data1.json"), emp);
        //将对象转化为json格式数据,并输出到控制台上
        objectMapper.writeValue(System.out, emp);
        
//        StringWriter  str =new StringWriter();
//        JsonGenerator s=new JsonFactory().createGenerator(str);
//        objectMapper.writeValue(s, emp);
//        String data =new String();
//        str.write(data);
//        System.out.println(data);
	}

2、从InputStream读入或向OutPutStream写出

public void testInputStream() throws JsonParseException, JsonMappingException, IOException{
        ObjectMapper objectMapper = new ObjectMapper();
        Employee emp = objectMapper.readValue(new FileInputStream("src/data.json"), Employee.class);
        System.out.println(emp.toString());
	}
	public void testOutPutStream() throws JsonParseException, JsonMappingException, IOException{
        ObjectMapper objectMapper = new ObjectMapper();
        Employee emp = objectMapper.readValue(new File("src/data.json"), Employee.class);
        //将对象转化为json格式,并存入到文件中
        objectMapper.writeValue(new FileOutputStream("src/data1.json"), emp);

        //JsonNode node = mapper.readTree(new File("country2.json"));

       //将对象转化为json格式数据,并输出到控制台上
        objectMapper.writeValue(System.out, emp);

	}

3、从URL中读取数据(若URL返回的满足Employee类的json数据)

Employee emp1 = objectMapper.readValue("http://www.xxx.com/xxx", Employee.class);
JsonNode jsonNode = objectMapper.readTree("http://www.xxx.com/xxx");

4、常用的方法

//将user对象转化为json格式字符串
String json=mapper.writeValueAsString(user)

//将json格式的字符串转化为对象,示例如下:
Map m = mapper.readValue(json, Map.class)
Employee emp = objectMapper.readValue(new File("src/data.json"), Employee.class);


2.2、JsonGenerator

public void testJsonGenerator() throws IOException{
		URL url =new URL("http://www.xxx.com/xxx");
		URLConnection urlConnection = url.openConnection();
		urlConnection.setDoOutput(true);
		urlConnection.setDoInput(true);
		
		//产生一个JsonGenerator类
		JsonFactory jsonFactory = new JsonFactory();
		JsonGenerator jsonGenerator = jsonFactory.createGenerator(urlConnection.getOutputStream(), JsonEncoding.UTF8);
		jsonGenerator.writeString("wwwwwwwww");		
		jsonGenerator.writeStartObject();
		jsonGenerator.writeStringField("brand", "Mercedes");
		jsonGenerator.writeNumberField("doors", 5);
		jsonGenerator.writeEndObject();
		jsonGenerator.close();
	}






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值