您的位置:首页 > Web前端 > JavaScript

安卓中使用Gson解析json方法详解与使用例子

2016-04-21 21:09 591 查看
//转换器

GsonBuilder builder = new GsonBuilder();

// 不转换没有 @Expose 注解的字段 @Expose的作用是支持序列化,没有@Expose不会被序列化

builder.excludeFieldsWithoutExposeAnnotation();

Gson gson = builder.create();

@Expose注解的作用:区分实体中不想被序列化的属性,其自身包含两个属性deserialize(反序列化)和serialize(序列化),默认都为true。

使用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();创建Gson对象,没有@Expose注释的属性将不会被序列化.。

private class User{
private int id;
@Expose
private String name;
.......

}
这样create() gson对象序列化user,只会有name这一个属性

也可以直接new出来
Gson gson =new Gson;//这样就不用@Expose注解,全部都能序列化

//1、对象转string

Student stu = new Student();

stu.setStudentId(333);

stu.setStudentName("qqq");

String stuStr = gson.toJson(stu);

System.out.println(stuStr); //{"studentName":"qqq","studentId":333}

//2、string转对象

Student user2 = gson.fromJson(stuStr, Student.class);

System.out.println(user2);

String stuTemp = "{\"studentName\":\"qqq2\",\"studentId\":3335}";

Student user4 = gson.fromJson(stuTemp, Student.class);

System.out.println(user4);

//3、对象List转string

List<Student> testBeanList = new ArrayList<Student>();

Student testBean = new Student();

testBean.setStudentId(555);

testBean.setStudentName("552");

testBeanList.add(testBean);

//Gson gsonList = new Gson();

Type type = new TypeToken<List<Student>>(){}.getType(); //指定集合对象属性

String beanListToJson = gson.toJson(testBeanList, type);

System.out.println(beanListToJson); //[{"studentName":"552","studentId":555}]

//集合string转对象list

List<Student> testBeanListFromJson = gson.fromJson(beanListToJson, type);

System.out.println(testBeanListFromJson); //[555:552]

//4、集合如果不指定类型 默认为String

List<String> testList = new ArrayList<String>();

testList.add("first");

testList.add("second");

String listToJson = gson.toJson(testList);

System.out.println(listToJson); //["first","second"]

//5、集合字符串转回来需要指定类型

List<String> testList2 = (List<String>) gson.fromJson(listToJson,

new TypeToken<List<String>>() {

}.getType());

System.out.println(testList2);

//6、 将HashMap字符串转换为 JSON

Map<String, String> testMap = new HashMap<String, String>();

testMap.put("id", "id.first");

testMap.put("name", "name.second");

String mapToJson = gson.toJson(testMap);

System.out.println(mapToJson); //{"id":"id.first","name":"name.second"}

//7、stringMap转对象

Map<String, String> userMap2 = (Map<String, String>) gson.fromJson(mapToJson,

new TypeToken<Map<String, String>>() {

}.getType());

System.out.println(userMap2); //{id=id.first, name=name.second}

//8、对象含有普通对象、集合、map情况

Student user1 = new Student();

user1.setStudentId(1001);

user1.setStudentName("张三");

Student user3 = new Student();

user3.setStudentId(1002);

user3.setStudentName("李四");

Map<String, Student> userMap = new HashMap<String, Student>();

userMap.put("user1", user1);

userMap.put("user3", user3);

List<Student> userList = new ArrayList<Student>();

userList.add(user1);

userList.add(user3);

Teacher groupBean = new Teacher();

groupBean.setStudent(user1);

groupBean.setStus(userList);

groupBean.setMap((HashMap)userMap);

//groupBean.setUserList(userList);

Gson gsonGroup = new Gson();

String sGroupBean = gsonGroup.toJson(groupBean, new TypeToken<Teacher>() {

}.getType());

System.out.println(sGroupBean);

/*{"stus":[{"studentName":"张三","studentId":1001},{"studentName":"李四","studentId":1002}],"student":{"studentName":"张三","studentId":1001},"map":{"user3":{"studentName":"李四","studentId":1002},"user1":{"studentName":"张三","studentId":1001}},"id":0,"age":0}*/

Java代码



//9、复杂对象string转对象

Teacher groupBean2 = (Teacher) gson.fromJson(sGroupBean,

new TypeToken<Teacher>() {

}.getType());

System.out.println(groupBean2);

Java代码



package com.andtools;

import com.google.gson.annotations.Expose;

public class Student {

@Expose

private String studentName;

@Expose

private int studentId;

public Student(){}

public Student(int studentId,String studentName){

this.setStudentId(studentId);

this.setStudentName(studentName);

}

public String toString(){

return this.getStudentId() + ":" + this.getStudentName();

}

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

public int getStudentId() {

return studentId;

}

public void setStudentId(int studentId) {

this.studentId = studentId;

}

}

Java代码



package com.andtools;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.google.gson.annotations.Expose;

public class Teacher {

@Expose

private int id;

@Expose

private String name;

@Expose

private int age;

@Expose

private Student student;

@Expose

private List stus;

@Expose

private HashMap map;

public String toString(){

return this.getId()+":"+this.getName()+":"+this.getAge() +":"+ this.getStudent().toString() + ":" + this.getStus() + ":" + this.getMap();

}

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 Student getStudent() {

return student;

}

public void setStudent(Student student) {

this.student = student;

}

public List getStus() {

return stus;

}

public void setStus(List stus) {

this.stus = stus;

}

public HashMap getMap() {

return map;

}

public void setMap(HashMap map) {

this.map = map;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: