生活在移动互联网的世界的网络真的是让人离不开,现在很多的手机应用都是需要联网获取数据,那么问题来了,既然要从服务器上获取数据,你就要去解析数据,那么简单有效的解析方法就非常的重要了,本人也是在解析数据上尝到了滋味,感谢平哥的指导,在这里给大家分享Android关于Json和Gson解析,希望能给在学Android或者将要学Android的同学带来乐趣,接下来看看吧!
第一步:要用json和gson解析数据呢,首先要向工程中导入架包,如图 ![]() 第二步:从网络上获取数据:下面这个静态的方法可以直接调用【这里只介绍get请求,post请求暂不介绍】 public static String sendGet(String path){
// path要执行的网络接口链接
String strResult = new String();
// strResult将要返回的网络数据 try{
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(path);
HttpResponse httpResponse = httpClient.execute(httpGet);
if(httpResponse.getStatusLine().getStatusCode()==200){
strResult = EntityUtils.toString(httpResponse.getEntity());
}
}catch(Exception e){
System.out.println(">>>"+e.getMessage());
}
return strResult;
}
注意:一定要在AndroidManifest.xml文件中注册联网权限哦 <uses-permission android:name="android.permission.INTERNET"/> 第三步:判断获取的数据格式,从而确定要用何种请求方式 感悟分享:数据解析大多数情况是json和gson一起使用,解析非常方便,手动解析也可以,但是很麻烦。解析时的步骤一般是:新建数据的model【根据数据格式】,json与gson配合,gson与model结合,取出数据 例一:比较简单的数据格式 {"result“: {"attentionCount":"0","collectCount":"0","email":"","fansCount":"0","head":""},"status":1} 从格式上看:最外层共有两个大键,一个键里面存放了一个字符串,这个字符串里又是小键值对存在的方式,但是他返回的数据解析 出来是一条 UserInfoModel.java //注意:定义的字段名要与数据键名一致 /* public class Result {
private String attentionCount;
private String collectCount;
private String email;
private String fansCount;
private String head;
public String getAttentionCount() {
return attentionCount;
}
public void setAttentionCount(String attentionCount) {
this.attentionCount = attentionCount;
}
public String getCollectCount() {
return collectCount;
}
public void setCollectCount(String collectCount) {
this.collectCount = collectCount;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getFansCount() {
return fansCount;
}
public void setFansCount(String fansCount) {
this.fansCount = fansCount;
}
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
*/ 解析文件的代码 /* private UserInfoModel jieXiUserInfo(String result) {
UserInfoModel userInfoModel = new UserInfoModel();
try {
JSONObject jsonObject = new JSONObject(result);
int result_flag = jsonObject.getInt("status");
System.out.println("result_flag:" + result_flag);
if(result_flag == 1) {
String myMess = jsonObject.getString("result");
Gson mGson=new Gson();
UserInfoModel nInfoModel=mGson.fromJson(myMess,UserInfoModel.class);
System.out.println("xxxxx:"+myMess);
return userInfoModel;
}else {
return null;
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
*/ 例二:键值对存在和数组存在的 {"test":[{"name":"a","id":"2"},{"name":"a","id":"2"},{"name":"a","id":"2"},{"name":"a","id":"2"}]} Person.java public class Person{
private String name;
private String id;
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 static List<Person> getListPerson(String jsonString) { JSONObject jsonObject = new JSONObject(jsonString); String test = jsonObject.getInt("test"); List<Person> list = new ArrayList<Person>(); Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken<List<Person>>(){}.getType()); return list;//list就是返回的键值对集合 } */ 学会分享,成就你我他,欢迎大家借鉴并提出意见或建议,我们共同进步 |
Android关于网络获取数据和解析数据
最新推荐文章于 2023-10-17 10:57:01 发布