GsonResolver
来源:互联网 发布:淘宝客户分类管理 编辑:程序博客网 时间:2024/06/11 15:44
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hgz.day13gsonresolver.bean.Person;
import com.hgz.day13gsonresolver.bean.Person.Homeinfo;
import com.hgz.day13gsonresolver.bean.User;
import com.hgz.day13gsonresolver.utils.ReadStreamTools;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
//gson解析方式
private Button btnGsonResolverObject;
private Button btnGsonResolverArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
btnGsonResolverObject.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
InputStream is = getAssets().open("simple2.txt");
String json = ReadStreamTools.readFile(is);
Gson gson = new Gson();
Person person = gson.fromJson(json, Person.class);
List<Homeinfo> list = person.getHomeinfo();
System.out.println(person.toString());
Toast.makeText(MainActivity.this, person.toString(), 0)
.show();
for (Homeinfo homeinfo : list) {
Toast.makeText(MainActivity.this, homeinfo.toString(),
0).show();
System.out.println(homeinfo.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
//解析最外层是数组的情况
btnGsonResolverArray.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
InputStream is = getAssets().open("simple3.txt");
String json = ReadStreamTools.readFile(is);
Gson gson = new Gson();
// 返回形式 : 数组的形式 JavaBean的类名[].class 以数组的形式返回
// 集合的形式 new TypeToken<List<User>(){}.getType();
// User[] users = gson.fromJson(json, User[].class);
/*
* for (User user : users) {
* System.out.println("数组 : "+user.toString()); }
*/
// new TypeToken<List<User>>(){}.getType();
// 返回数组形式
// User[] users = gson.fromJson(json, User[].class);
// System.out.println(users.toString());
// for (User user : users) {
// Toast.makeText(MainActivity.this, user.toString(),
// 0).show();
// }
// 返回集合形式
List<User> list= gson.fromJson(json, new
TypeToken<List<User>>() {
}.getType());
Toast.makeText(MainActivity.this,list.toString(),0).show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void initView() {
btnGsonResolverObject = (Button) findViewById(R.id.btnGsonResolverObject);
btnGsonResolverArray = (Button) findViewById(R.id.btnGsonResolverArray);
}
}
//Bean类Person
import java.util.List;
public class Person {
// gson解析有个特点 java bean字段名一定要与json 的key(名称)一致
private String address;
private int age;
private String name;
private String phone;
private String sex;
private List<Homeinfo> homeinfo;
@Override
public String toString() {
return "Person [address=" + address + ", age=" + age + ", name=" + name
+ ", phone=" + phone + ", sex=" + sex + ", homeinfo="
+ homeinfo + "]";
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public List<Homeinfo> getHomeinfo() {
return homeinfo;
}
public void setHomeinfo(List<Homeinfo> homeinfo) {
this.homeinfo = homeinfo;
}
// 解析第二层数据
public class Homeinfo {
private String address;
private int age;
private String name;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Homeinfo [address=" + address + ", age=" + age + ", name="
+ name + "]";
}
}
}
//Bean类User
public class User {
private int age;
private String company;
private String name;
private String phone;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User [age=" + age + ", company=" + company + ", name=" + name
+ ", phone=" + phone + "]";
}
}
//工具类
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class ReadStreamTools {
public static String readFile(InputStream is) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length = 0;
while ((length = is.read(buffer)) != -1) {
baos.write(buffer, 0, length);
}
is.close();
baos.close();
return baos.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}