300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android jackson 解析json字符串 android:json解析的两个工具:Gson和Jackson的使用小样例...

android jackson 解析json字符串 android:json解析的两个工具:Gson和Jackson的使用小样例...

时间:2022-08-04 20:52:29

相关推荐

android jackson 解析json字符串 android:json解析的两个工具:Gson和Jackson的使用小样例...

1.简单介绍

json是android与server通信过程中经常使用的数据格式,比如。例如以下是一个json格式的字符串:

{"address":"Nanjing","name":"NUPT","students":[{"name":"stu1","id":"10000","age":20},{"name":"stu1","id":"10001","age":21},{"name":"stu1","id":"10002","age":22}]}

2.android中经常使用的两个json库为:Gson和Jackson,一下就看一下它们是怎样将对象转化为json字符串,以及怎样将json字符串转化为java对象。

定义Student类:

/*

* $filename: Student.java,v $

* $Date: -5-12 $

* Copyright (C) ZhengHaibo, Inc. All rights reserved.

* This software is Made by Zhenghaibo.

*/

package com.example.testjson;

/*

*@author: ZhengHaibo

*web: /nuptboyzhb

*mail: [emailprotected]

*-5-12 Nanjing,njupt,China

*/

public class Student {

private String name;

private String id;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

定义School类:

/*

* $filename: School.java,v $

* $Date: -5-12 $

* Copyright (C) ZhengHaibo, Inc. All rights reserved.

* This software is Made by Zhenghaibo.

*/

package com.example.testjson;

import java.util.List;

/*

*@author: ZhengHaibo

*web: /nuptboyzhb

*mail: [emailprotected]

*-5-12 Nanjing,njupt,China

*/

public class School {

private String name;

private String address;

List students;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAddress() {

return address;

}

public void setAddress(String address) {

this.address = address;

}

public List getStudents() {

return students;

}

public void setStudents(List students) {

this.students = students;

}

}

初始化一个School的java对象,待使用:

private School initSchoolData(){

School school = new School();

school.setAddress("Nanjing");

school.setName("NUPT");

List list = new ArrayList();

for(int i= 0;i<3;i++){

Student student = new Student();

student.setAge(20+i);

student.setId("1000"+i);

student.setName("stu"+1);

list.add(student);

}

school.setStudents(list);

return school;

}

3.使用Gson。进行java对象与json字符串之间的相互转换

private void testGson(){

School school = initSchoolData();

Gson gson = new Gson();

//将对象转化为json字符串

String jsonString = gson.toJson(school).toString();

//打印

System.out.println("GSON="+jsonString);

/******切割线*****/

//将字符串转化为JSON对象

School resultSchool = gson.fromJson(jsonString, School.class);

//打印

System.out.println(resultSchool.getStudents().get(0).getName());

}

可见,Gson是通过toJson和fromJson两个方法进行转换的,使用起来十分方便。

4.使用Jackson

private void testJackson(){

School school = initSchoolData();

ObjectMapper objectMapper = new ObjectMapper();

String jsonString = "";

//将对象转化为Json字符串

try {

jsonString = objectMapper.writeValueAsString(school);

System.out.println("Jackson="+jsonString);

} catch (JsonProcessingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//将json字符串解析成java对象

try {

School resultSchool = objectMapper.readValue(jsonString, School.class);

//打印

System.out.println(resultSchool.getStudents().get(0).getName());

} catch (JsonParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (JsonMappingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

使用Jackson,主要是使用writeValueAsString和readValue这两个方法。此外。Jackson的writeValue和readValue有非常多种參数类型,适用于多中场合。

注意:以上仅仅是这两个工具类的基本使用方法,很多其它了解。參见官方文档。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。