以前就用过json串,不过是在java环境下面,如今转移到android环境下,java里面生成解析json串的jar包与android中自带的冲突,所以也只能用安卓自带的。

先前查网上的资料,感觉很多都说的很乱,直接给出了例子,也不解释一下就算完成,他们自己肯定是明白的,但是让读者理解起来肯定有点难度。而且解析的方法很多,而这里,我就介绍一种最原始最简单的吧。希望我拙劣的表达能力不会影响到你们的理解。 首先我们先讲一下json串格式 比如对象pet(宠物) class pet{ int petid;//编号 String petname;//名称 String pettype;//类型 } 那么对象的json串形式就是 {"pet":[{"petid":1000,"petname":"name1","pettype":"type1"}]} 而如果我们创建多个pet对象,那么字符串形式就为: {"pet":[{"petid":1000,"petname":"name1","pettype":"type1"},{"petid":1002,"petname":"name2","pettype":"type2"}]} 这里定义的如果是int型,值就不要添加"号,如果String类型或者其他类型,则添加"。 一、生成json串 好了,下面我们来利用android自带的JSONObject来创建一个json字符串。 [java] <span style="font-size:18px">public String petToJson(Pet pet) { String jsonresult = "";//定义返回字符串 JSONObject object = new JSONObject();//创建一个总的对象,这个对象对整个json串 try { JSONArray jsonarray = new JSONArray();//json数组,里面包含的内容为pet的所有对象 JSONObject jsonObj = new JSONObject();//pet对象,json形式 jsonObj.put("petid", pet.getPetid());//向pet对象里面添加值 jsonObj.put("petname", pet.getPetname()); jsonObj.put("pettype", pet.getPettype()); // 把每个数据当作一对象添加到数组里 jsonarray.put(jsonObj);//向json数组里面添加pet对象 object.put("pet", jsonarray);//向总对象里面添加包含pet的数组 jsonresult = object.toString();//生成返回字符串 } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } LogI("生成的json串为:"+jsonresult); return jsonresult; }</span> 最后生成结果为:{"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]} 当然,如果我们想生成多个对象,那么只需要多调用几次 [java] <span style="font-size:18px">jsonarray.put(jsonObj);//向json数组里面添加pet对象</span> 这个方法就可以了。 另外对于最外层的object我们可以这样去理解,实际上我们生成的是 object{ List<pet> list; } 这样的类型,只不过最外面的object我们看不到而已。 二、解析json串 其实解析和生成是相对应的,怎么样生成的,那么就应该怎么样返过来解析 传入的json={"pet":[{"petid":100,"petname":"name1","pettype":"type1"}]} [java] <span style="font-size:18px">public Pet jsonToPet(String json){ if(json.startsWith("error")){//这里可以做一下检测,如果不是json格式的就直接返回 return null; } Pet pet=new Pet();//准备返回的pet对象 try { JSONObject jsonObject=new JSONObject(json);//我们需要把json串看成一个大的对象 JSONArray jsonArray=jsonObject.getJSONArray("pet");//这里获取的是装载有所有pet对象的数组 JSONObject jsonpet = jsonArray.getJSONObject(0);//获取这个数组中第一个pet对象 String petid=jsonpet.getString("petid");//获取pet对象的参数 String petname=jsonpet.getString("petname"); String pettype=jsonpet.getString("pettype"); pet.setPetid(petid);//把参数添加到pet对象当中。 pet.setPetid(petname); pet.setPetid(pettype); } catch (JSONException e) { e.printStackTrace(); } LogI("json To Pet:"+pet.toString());//打印出pet对象参数。 return pet; }</span> 三、总结 其实json串的解析是很简单的,当然本文章中我之举了一个最简单的例子。实际应用中传入的json串并不是标准的。有可能是:[{"petid":100,"petname":"name1","pettype":"type1"}]这样的,那么对于这样的很明显这是一个数组形式,那么我们就直接用 [java] <span style="font-size:18px">JSONArray jsonArray=new </span><span style="font-size:18px">JSONArray</span><span style="font-size:18px">(json);</span> 来解析就可以了。 当然具体的形式还有很多种,但是我们只要分清对象和数组这个相互包含的概念,就一定能够解析出来。 转载:http://www.2cto.com/kf/201309/244866.html

更多相关文章

  1. Android和.NET通用的DES算法
  2. android 的 sp 智能指针用法介绍 sp wp
  3. Android(安卓)内功心法(1.4)——android常用设计模式之代理模式
  4. android sudio 如何获取sha1与md5值
  5. 方向传感器
  6. activity的几种启动模式
  7. Android中Context相关知识整理
  8. 8、android代码优化技术记录
  9. debug.keystore文件不存在解决办法

随机推荐

  1. 一篇文章教你读懂UI绘制流程
  2. Looper,Handler,Message
  3. Google董事长:望Android遍布世界 智能机明
  4. Android目录结构(详解)
  5. 五步学会Android的ListView控件
  6. Android Studio:10分钟教会你做百度地图定
  7. android比赛
  8. Android开发注意点
  9. Android中ListView使用总结
  10. 基于Android浮动组件 可用于应用中新功能