android中json解析的两个工具:Gson和Jackson的使用小demo

本文介绍Android开发中常用的JSON处理库Gson与Jackson的使用方法,包括Java对象与JSON字符串的相互转换过程,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简介

json是android与服务器通信过程中常用的数据格式,例如,如下是一个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类:

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类:
public class School {
  private String name;
  private String address;
  List<Student> 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<Student> getStudents() {
    return students;
  }
  public void setStudents(List<Student> students) {
    this.students = students;
  }
}

初始化一个School的java对象,待使用:
private School initSchoolData(){
      School school = new School();
      school.setAddress("Nanjing");
      school.setName("NUPT");
      List<Student> list = new ArrayList<Student>();
      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有很多种参数类型,适用于多中场合

Gson文档: http://code.google.com/p/google-gson/

Jackson: http://jackson.codehaus.org/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值