我的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.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();
}
}
}
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();
}
}
}
相关文章推荐
- 在 Android 应用程序中使用 Internet 数据 解析 XML、JSON 和 protocol buffers 数据
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- Android下使用Gson解析JSON数据
- Android中使用Gson解析JSON数据
- Android中使用Gson解析JSON数据的两种方法
- Android使用自带JSONObject解析JSON数据 - jCuckoo的专栏 - 博客频道 - CSDN.NET
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据
- Android访问网络:服务端返回XML或JSON格式数据,Android 进行解析并使用ListView显示
- Android使用JSON进行数据解析
- Android中使用Gson解析JSON数据
- Android解析Json数据(二)—使用反射机制
- Android中使用Gson解析JSON数据
- Android中的httpClient使用及JSON格式数据的解析方法
- 在 Android 应用程序中使用 Internet 数据 解析 XML、JSON 和 protocol buffers 数据
- Android中使用Gson解析JSON数据的两种方法
- Android中使用Gson解析JSON数据
- Android网络之数据解析----使用Google Gson解析Json数据
- android 将数据转换成JSON数据格式并使用JSONObject解析JSON格式的数据
- Android中Json数据解析(二)--使用Gson、Jackson和FastJson解析Json数据