JSON

android下基本json串的生成与解析

字号+ 作者:H5之家 来源:H5之家 2015-10-06 17:11 我要评论( )

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

> 移动开发 > Android > 正文 android下基本json串的生成与解析 2013-09-18            作者:失落夏天    我要投稿 以前就用过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>  

 

三、总结

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评
r