Gson框架
GSON是一个Java库,可用于将Java对象转换为它们的JSON表示形式。
它还可以用于将JSON字符串转换为等效的Java对象。gson可以处理任意Java对象
--摘自:https://github.com/google/gson
实际是就是方便我们解析json
使用方法:
一、只含一个json(不涉及嵌套)
json格式(http://148.70.46.9/object)
{
“age”:30,
“name”:“张三”,
“isstudent”:true
}
2.定义一个类,来存放json数据
public class Student {
public int age;
public String name;
public String isstudent;
}
3.在MainActivity的onCreate的onSuccess中调用下面函数
Gson gson=new Gson();
Student student=gson.fromJson(result,Student.class);
通过调试我们可以看到已经成功获取到json数据
二、嵌套了一个json
1. json格式(http://148.70.46.9/object1)
{
“age”:20,
“name”:“张三”,
“isstudent”:true,
“class”:{
“grade”:“18级”,
“classname”:“中医学”
}
}
2.定义一个类,来存放json数据
import com.google.gson.annotations.SerializedName;
/*{
"age":20,
"name":"张三",
"isstudent":true,
"class":{
"grade":"18级",
"classname":"中医学"
}
}*/
public class Student {
public int age;
public String grade;
public boolean isstudent;
@SerializedName("class")
public MyClass class1;
public class MyClass{
String grade;
String classname;
}
}
三 、数组
1.http://148.70.46.9/array
[ “张三”, “李四”, “王五” ]
2.定义一个数组,来存放json数据
Gson gson=new Gson();
String string[]=gson.fromJson(result,String[].class);
四、数组里面还有json对象
[
{
“id”:“001”,
“age”:30,
“name”:“张三”,
“isstudent”:false
},
{
“id”:“002”,
“age”:25,
“name”:“李四”,
“isstudent”:true
},
{
“id”:“003”,
“age”:26,
“name”:“王五”,
“isstudent”:true
}
]
2.定义一个类,来存放json数据
/*
"id":"001",
"age":30,
"name":"张三",
"isstudent":false
}*/
public class Student {
public String id;
public int age;
public String name;
public boolean isstudent;
}
Gson gson=new Gson();
List<Student> list= gson.fromJson(result,new TypeToken<ArrayList<Student>>(){}.getType());
五、 json对象中有对象数组
1.
{
“grade”:“18级”,
“classname”:“中医学”,
“students”:[
{
“id”:“001”,
“age”:30,
“name”:“张三”,
“isstudent”:false
},
{
“id”:“002”,
“age”:25,
“name”:“李四”,
“isstudent”:true
},
{
“id”:“003”,
“age”:26,
“name”:“王五”,
“isstudent”:true
}
]
}
2.类
import java.util.ArrayList;
/*
{
"grade":"18级",
"classname":"中医学",
"students":[
{
"id":"001",
"age":30,
"name":"张三",
"isstudent":false
},
{
"id":"002",
"age":25,
"name":"李四",
"isstudent":true
},
{
"id":"003",
"age":26,
"name":"王五",
"isstudent":true
}
]
}
}*/
public class Student {
public String grade;
public String classname;
//存放数组
ArrayList<MyStudent> students=new ArrayList();
//数组里面的对象
public class MyStudent{
public String id;
public int age;
public String name;
public boolean isstudent;
}
}
Gson gson=new Gson();
Student student=gson.fromJson(result,Student.class);
六、插件:GsonFormat(方便简化创建实体类存json的过程)
七、 总结:
1.如果解析的是json对象的话,就直接通过 Gson gson=new Gson();
Student student=gson.fromJson(result,类.class);;至于类里面怎么定义需要根据json的数据形式来顶;
2.如果给的是一个数组形式解析,我们直接就可以Gson gson=new Gson();
String string[]=gson.fromJson(result,String[].class);
3.如果是数组里面还有json对象就用Gson gson=new Gson();
List list= gson.fromJson(result,new TypeToken<ArrayList>(){}.getType());