今天教大家用Gson 来解析json
导入Gson的方法自行百度!
准备工作:用Android Studio的小伙伴可以装一个插件,gsonformat,不会装的哥们给你们个链接
http://blog.youkuaiyun.com/dakaring/article/details/46300963
用eclipse的小伙伴也不要着急,有个秘密武器送给你,去下载吧!
http://download.youkuaiyun.com/download/zxc472504515/9986483
先上工具类,然后做解析
public final class JSONUtils {
//解析jsonobject,以{}开头和结尾
public static <T> T parseJSON(String jsonStr, Class<T> t) {
Gson gson = new Gson();
T bean = gson.fromJson(jsonStr, t);
return bean;
}
/**
* //jsonarry,以[]开头和结尾
* @param response
* @param type
* Type type = new TypeToken< ArrayList<实体类名>>() { }.getType();
// *
* @return
*/
public static <T> T parseJSONArray(String response, Type type) {
Gson gson = new Gson();
T data = gson.fromJson(response, type);
return data;
}
//把map转为String,很少用
public static <T> String mapToJson(Map<String, T> map) {
Gson gson = new Gson();
String jsonStr = gson.toJson(map);
return jsonStr;
}
}
第一种,上数据,jsonobject,以{}开头和结尾
{"error_code":10005,"reason":"应用未审核超时,请提交认证"}
用Gsonformat解析好的javabean如下
public class Man {
/**
* error_code : 10005
* reason : 应用未审核超时,请提交认证
*/
private int error_code;
private String reason;
public int getError_code() {
return error_code;
}
public void setError_code(int error_code) {
this.error_code = error_code;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
关键来了
//参数第一个 你拿到那段json数据 ;参数第二个 就是那个类名
Man man = JSONUtils.parseJSON(ST, Man.class);
//获得错误码
int error_code = man.getError_code();
//错误原因
String reason = man.getReason();
至此第一种类型的就解析完了
第二种 ,上数据 ,jsonarry以[]开头和结尾。
[
{
"name": "张三",
"age": 18
},
{
"name": "李四",
"age": 19
}
]
用Gsonformat解析好的javabean如下
public class Man {
/**
* name : 张三
* age : 18
*/
private String name;
private int age;
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;
}
}
注意导包导这个,不然会出错
import java.lang.reflect.Type;
import com.google.gson.reflect.TypeToken;
接下来好戏来了
Type type = new TypeToken<ArrayList<Man>>() { }.getType();
//获得了一个Man(类名)的集合
ArrayList<Man> first = JSONUtils.parseJSONArray(st, type);
//获得第一个人的年龄
int age = first.get(0).getAge();
Log.e("888", ""+age);
打印下是18岁哦!
至此用Gson解析Jsonobject和jsonArray都完成了!
写的不好,多多见谅!
本人QQ:2973901695,欢迎交流!