json生成和解析
来源:互联网 发布:linux远程ssh登录失败 编辑:程序博客网 时间:2024/04/29 14:26
- android下基本json串的生成与解析
- 2013-09-18 15:38:37 我来说两句 作者:失落夏天
- 收藏我要投稿
- 以前就用过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 blocke.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>来解析就可以了。当然具体的形式还有很多种,但是我们只要分清对象和数组这个相互包含的概念,就一定能够解析出来。
0 0
- json生成和解析
- json 解析和生成
- json解析和生成
- 生成和解析json
- Json的解析和生成
- Json的解析和生成
- json数据解析和生成
- json的生成和解析
- iOS json解析 和生成json串
- JsonReader解析json和JsonWriter生成json
- Java反射生成json和解析json
- 生成json文件和解析json文件
- JSON之生成JSON字符串和解析
- iOS json解析 和生成json串
- GSON方式生成和解析json数据
- fastjson生成和解析json数据
- JSON数据的生成和解析
- FastJson生成和解析JSON数据
- jsp内置对象作用域
- cf452A Eevee
- C++ primer(第五版) 练习 7.15 个人 code
- 输入一组整型数据,以逗号隔开,寻找出现次数大于总数一半的数
- 栈的顺序表示与实现
- json生成和解析
- zoj 1601
- 文件上传原理实现
- 编译busybox的时候出现error: field 'in' has incomplete type
- xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)
- Experience of writing a network framework
- linux永久保存环境变量
- java版博客系统绝对震撼 项目用到的技术很多,做的比较正规把,和官网的博客差别不大
- hadoop-分布式环境搭建