您的位置:首页 > 移动开发 > Android开发

我的Android之旅(二十二)---使用Gosn解析JSON数据

2016-08-21 19:38 501 查看

GSON 的介绍:

    GSON 是一个JAVA 库,可用于将JAVA 对象转换称JSON,它也可以被用于将一个JSON 字符串转换为等效的Java对象。

    GSON 可以与任意Java对象,包括预先存在的对象或者你没有源代码结合。

解析JSON数据的两种方法:

   

    (1): 通过获取JsonReader对象解析JSON数据;

    (2): 通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作

第一种方法我在上一篇博客中已经做了简单的介绍,接下来我们就一起来看看,第二种解析的方法,使用Gson解析。

使用GSON 解析 json数据必须用到一个jar包,可自行在网上下载,存在libs目录下:

这是和上一个博客解析相同的数据,只是方法不同;

package com.jerehedu.jereduch10;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.google.gson.Gson;
import com.jerehedu.jereduch10.entity.City;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

public class PaserJesonActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paser_jeson);
InputStream is=null;
BufferedReader reader=null;
StringBuilder sbd=new StringBuilder();
try {
//json 对象 对应json中的{}
//json 数组 对应json中的[];
is= getResources().getAssets().open("cityinfo.txt");
reader=new BufferedReader(new InputStreamReader(is));
String row="";
while ((row=reader.readLine())!=null){
sbd.append(row);
}
Gson gson=new Gson();
City city=gson.fromJson(sbd.toString(),City.class);
List<City.DataBean>
myData=city.getData();
for (int i=0;i<myData.size();i++){
City.DataBean
childrenBean=myData.get(i);
Log.d("====",childrenBean.getCode());
Log.d("====",childrenBean.getName());
for (int j=0;j<myData.size();j++){
City.DataBean.ChildrenBean
childrenBean1=childrenBean.getChildren().get(j);
Log.d("====",childrenBean1.getCode());
Log.d("====",childrenBean1.getName());

}

}

} catch (IOException e) {
e.printStackTrace();
//        } catch (JSONException e) {
//            e.printStackTrace();
}
}
}

解析的结果:



方法不同,但结果相同。在以后的应用中,可以根据自己掌握的程度来选择解析的方法。

下面是一个解析新闻的例子

package com.jerehedu.jereduch10;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.google.gson.Gson;
import com.jerehedu.jereduch10.entity.News;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

public class PaserJeson1Activity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_paser_jeson1);
InputStream is=null;
BufferedReader reader=null;
StringBuilder sbd=new StringBuilder();
try {
is= getResources().getAssets().open("jsonNews.txt");
reader=new BufferedReader(new InputStreamReader(is));
String row="";
while ((row=reader.readLine())!=null){
sbd.append(row);
}
Gson gson=new Gson();
News news= gson.fromJson(sbd.toString(), News.class);
//List内只获得static类内的数据
List<News.ShowapiResBodyBean.PagebeanBean.ContentlistBean>
myData=news.getShowapi_res_body().getPagebean().getContentlist();
for (int i=0;i<myData.size();i++){
News.ShowapiResBodyBean.PagebeanBean.ContentlistBean
cb=myData.get(i);
Log.d("====", cb.getChannelName());
Log.d("====",cb.getTitle());
Log.d("====",cb.getPubDate());
Log.d("=====",cb.getImageurls()+"");
Log.d("====",cb.getContent());
}

} catch (IOException e) {
e.printStackTrace();
// } catch (JSONException e) {
// e.printStackTrace();
}
}
}


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