zoukankan      html  css  js  c++  java
  • android:json解析的两个工具:Gson和Jackson的使用小例子

    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类:

    /*
     * $filename: Student.java,v $
     * $Date: 2014-5-12  $
     * Copyright (C) ZhengHaibo, Inc. All rights reserved.
     * This software is Made by Zhenghaibo.
     */
    package com.example.testjson;
    /*
     *@author: ZhengHaibo  
     *web:     http://blog.csdn.net/nuptboyzhb
     *mail:    zhb931706659@126.com
     *2014-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: 2014-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:     http://blog.csdn.net/nuptboyzhb
     *mail:    zhb931706659@126.com
     *2014-5-12  Nanjing,njupt,China
     */
    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/

  • 相关阅读:
    贴板子系列_1-km算法,匈牙利算法
    bzoj 2333
    bzoj 3531 旅行
    斯坦纳树
    可持久化线段树
    下界最小费用最大流
    我们还是太NAive
    ubuntu出现有线已连接却无法上网
    python小爬虫【1】
    [解答]对‘’未定义的引用 collect2: 错误: ld 返回 1
  • 原文地址:https://www.cnblogs.com/code4app/p/4995163.html
Copyright © 2011-2022 走看看