android解析json数据的详解实例

========================!友情提示:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值