1.简介
json是android与服务器通信过程中常用的数据格式,例如,如下是一个json格式的字符串:
[plain] view plain copy
- {"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类:
[java] view plain copy
- /*
- * $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类:
[java] view plain copy
- /*
- * $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对象,待使用:
[java] view plain copy
- private School initSchoolData(){
- new School();
- "Nanjing");
- "NUPT");
- new ArrayList<Student>();
- for(int i= 0;i<3;i++){
- new Student();
- 20+i);
- "1000"+i);
- "stu"+1);
- list.add(student);
- }
- school.setStudents(list);
- return school;
- }
3.使用Gson,进行java对象与json字符串之间的相互转换
[java] view plain copy
- private void testGson(){
- School school = initSchoolData();
- new Gson();
- //将对象转化为json字符串
- String jsonString = gson.toJson(school).toString();
- //打印
- "GSON="+jsonString);
- /******分割线*****/
- //将字符串转化为JSON对象
- class);
- //打印
- 0).getName());
- }
可见,Gson是通过toJson和fromJson两个方法进行转换的,使用起来十分方便。
4.使用Jackson
[java] view plain copy
- private void testJackson(){
- School school = initSchoolData();
- new ObjectMapper();
- "";
- //将对象转化为Json字符串
- try {
- jsonString = objectMapper.writeValueAsString(school);
- "Jackson="+jsonString);
- catch (JsonProcessingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //将json字符串解析成java对象
- try {
- class);
- //打印
- 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/