android解析json数据的详解实例
2015-07-08 09:50
711 查看
========================!友情提示:
get()取值不正确会抛出异常,必须用try catch或者throw包起
而opt()取值不正确则会试图进行转化或者输出友好值,不会抛出异常
=========================================================
Map maps=new HashMap();
maps.put("name1", new Person("name1",12));
maps.put("name2", new Person("name2",13));
maps.put("name3", new Person("name3",14));
List< Person> persons=new ArrayList<Person>();
persons.add(new Person("name4", 15));
persons.add(new Person("name5", 16));
persons.add(new Person("name6", 17));
maps.put("name4Object", persons);
Gson gson=new Gson();
String json = gson.toJson(maps);
Log.i("MainActivity",json );
//使用jsonObject获取到自己想要的字符串
try {
//整个从服务器解析出来的json字符串生成JSONObject对象,拿什么数据,这里是源头
JSONObject jsonObject=new JSONObject(json);
//例如这里要拿name2的对象
String name2 = jsonObject.getString("name2");
Log.i("MainActivity",name2 );
Person person2 = gson.fromJson(name2, Person.class);
Log.i("MainActivity",person2.toString() );
//此处通过上面的JsonObject对象获取JSONArray对象
JSONArray jsonArray = jsonObject.getJSONArray("name4Object");
for (int i = 0; i < jsonArray.length(); i++) {
Object object = jsonArray.get(i);
Person person = gson.fromJson(object.toString(), Person.class);
Log.i("MainActivity","array:"+person.name+"--"+person.age);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
=============================这里是 log打印出来的日志=======================================
07-08 09:46:01.855: I
/MainActivity(9464): {"name1":{"name":"name1","age":12},"name2":{"name":"name2","age":13},"name4Object":[{"name":"name4","age":15},{"name":"name5","age":16},{"name":"name6","age":17}],"name3":{"name":"name3","age":14}}
07-08 09:46:01.862: I
/MainActivity(9464): {"age":13,"name":"name2"}
07-08 09:46:01.863: I
/MainActivity(9464): name213
07-08 09:46:01.864: I
/MainActivity(9464): array:name4--15
07-08 09:46:01.864: I
/MainActivity(9464): array:name5--16
07-08 09:46:01.865: I
/MainActivity(9464): array:name6--17
get()取值不正确会抛出异常,必须用try catch或者throw包起
而opt()取值不正确则会试图进行转化或者输出友好值,不会抛出异常
=========================================================
Map maps=new HashMap();
maps.put("name1", new Person("name1",12));
maps.put("name2", new Person("name2",13));
maps.put("name3", new Person("name3",14));
List< Person> persons=new ArrayList<Person>();
persons.add(new Person("name4", 15));
persons.add(new Person("name5", 16));
persons.add(new Person("name6", 17));
maps.put("name4Object", persons);
Gson gson=new Gson();
String json = gson.toJson(maps);
Log.i("MainActivity",json );
//使用jsonObject获取到自己想要的字符串
try {
//整个从服务器解析出来的json字符串生成JSONObject对象,拿什么数据,这里是源头
JSONObject jsonObject=new JSONObject(json);
//例如这里要拿name2的对象
String name2 = jsonObject.getString("name2");
Log.i("MainActivity",name2 );
Person person2 = gson.fromJson(name2, Person.class);
Log.i("MainActivity",person2.toString() );
//此处通过上面的JsonObject对象获取JSONArray对象
JSONArray jsonArray = jsonObject.getJSONArray("name4Object");
for (int i = 0; i < jsonArray.length(); i++) {
Object object = jsonArray.get(i);
Person person = gson.fromJson(object.toString(), Person.class);
Log.i("MainActivity","array:"+person.name+"--"+person.age);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
=============================这里是 log打印出来的日志=======================================
07-08 09:46:01.855: I
/MainActivity(9464): {"name1":{"name":"name1","age":12},"name2":{"name":"name2","age":13},"name4Object":[{"name":"name4","age":15},{"name":"name5","age":16},{"name":"name6","age":17}],"name3":{"name":"name3","age":14}}
07-08 09:46:01.862: I
/MainActivity(9464): {"age":13,"name":"name2"}
07-08 09:46:01.863: I
/MainActivity(9464): name213
07-08 09:46:01.864: I
/MainActivity(9464): array:name4--15
07-08 09:46:01.864: I
/MainActivity(9464): array:name5--16
07-08 09:46:01.865: I
/MainActivity(9464): array:name6--17
相关文章推荐
- android4.4.+状态栏改变颜色
- Android-Tab单选控件
- android listview去掉分割线 .
- 如何修改android 5.x版本recovery mode 小机器人界面进入菜单,由volume up&power改为直接按power(如同android 4.x以前版本)
- android菜鸟学习笔记15----Android Junit测试
- android 解析json数据格式
- Google I/O 2013 – Volley: Easy, Fast Networking for Android
- (android高仿系列)今日头条 --新闻阅读器 (一)
- Android项目运行报错adb...
- android防被杀
- Android 硬件加速
- Android环境配置
- Android Studio使用技巧系列教程(三)
- Android入门(33)——第十章 使用ViewPager实现导航
- Android 内存优化
- android 锁屏密码文件
- Android屏幕适配之使用布局别名
- 【Android实战】记录自学自定义GifView过程,详解属性那些事!【学习篇】
- Android Splash Activity
- android工作目录下.metadata文件夹的作用及各文件详解