Android数据传输格式(基于JSON格式)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Danielntz/article/details/51245232

        在进行App开发时,我们通常都要与服务器进行数据的传输,上一篇博客,我写到了与服务器进行交互的方法,数据可以传输到服务器,也可以从服务器上获取数据。这篇我们讲进行传输数据时的格式。

    当我们传输的数据非常少时,比如一个数据(名字,年龄,性别等),这样服务器获得后,或者是app获得后,数据比较清楚,容易进行操作。但如果传输的数据非常的多时,对于数据的处理,就变得麻烦,并且不好操作,不易阅读。所以JSON格式的数据传输就诞生了。JSON的具体含义自己百度一下就可以了。

 这篇我只写Android端的JSON封装和解析

 1 JSON 数据的格式(具体例子,一般来说有以下四种样式)

  1.1 单独一个JSON(带有key值):         

<span style="font-size:18px;">{
   "Person" :
        {
       "name":"jackon",                                                          
       "age" : 13,
       "sex" : "nan"
        }
     
}</span>
 Person 就是这个json的key值也叫做标识符

  1.2 JSON数组(带有key值):

<span style="font-size:18px;">{
    "students":
      [ 
         { "name":"jackson","age":100},
       
         { "name":"daniel","age":123}
      ]
}</span>
students就是这个JSON的key值,也就是标识符

 1.3 单独一个JSON(不带有Key值)     

<span style="font-size:18px;">{                                               

   "name":"jackon",                                                          
   "age" : 13,
   "sex" : "nan"

}</span>
1.4 JSON数组(不带有key值)

<span style="font-size:18px;">[

   { "name" : "jackson", "age": 100},
    
   { "name" : "daniel" , "age" :34}

]</span>

2 Android端JSON数据的封装

       在Android端使用JSON时,不需要引入JSON包,Android系统自带有JSON包 ,以下分别为四种JSON样式的封装和解析方法,我已函数的形式给出

2.1 符合1.1的JSON数据格式的封装和解析

      封装函数 

<span style="font-size:18px;">   //封装单独JSON(带有key值)
	      public  String   createJson() throws JSONException{
	    	   
	    	          String   json;
	    	          JSONObject   jsonobject = new JSONObject();
	    	          JSONObject   jsontostring = new JSONObject();
	    	          jsonobject.put("name", "小明");
	    	          jsonobject.put("sex", "男");
	    	          jsonobject.put("age", 25);
	    	          jsontostring.put("Person", jsonobject);     //给整体json前加上一个key值
	    	          Log.i(TAG, jsontostring.toString());
	    	          return  jsontostring.toString();
	    	     
	      }</span>
 结果 :  {"Person":{"sex":"男","age":25,"name":"小明"}}    

  解析函数

<span style="font-size:18px;"><span style="font-size:18px;">//解析单独JSON(带有key值)
	public  void    analysejsonkey(String jsonstring) throws JSONException{

		   JSONObject  jsonobject  = new JSONObject(jsonstring);  //获得整体的json字符串
		   JSONObject  json  = jsonobject.getJSONObject("Person"); //获得key所带有的value值
		   String  name  = json.getString("name");
		   String  sex  =  json.getString("sex");
		   int  age = json.getInt("age");
		   Log.i(TAG, name + sex + age);
		
	}</span></span>

结果 :小明男25

2.2 符合1.2的JSON数据格式的封装和解析

      封装函数

<span style="font-size:18px;"> //封装JSON数组(带有key值)
	         public  String   createJsons() throws JSONException{
	        	     
	    	          JSONArray     jsonarray   = new JSONArray();
	    	          JSONObject   jsontostring = new JSONObject();
	    	          for(int i = 0 ; i < 5 ;i++){     //封装5个json,构成一个数组
	    	         JSONObject   jsonobject = new JSONObject();  
	    	          jsonobject.put("name", "小明" + i);
	    	          jsonobject.put("sex", "男" + i );
	    	          jsonobject.put("age", 25 + i);
	    	          jsonarray.put(jsonobject);
	    	          }
	    	          jsontostring.put("Person", jsonarray);     //给整体json前加上一个key值
	    	          Log.i(TAG, jsontostring.toString());
	    	          return  jsontostring.toString();
	         }</span>
 结果 : {"Person":[{"sex":"男0","age":25,"name":"小明0"},{"sex":"男1","age":26,"name":"小明1"},{"sex":"男2","age":27,"name":"小明2"},{"sex":"男3","age":28,"name":"小明3"},{"sex":"男4","age":29,"name":"小明4"}]}

 解析函数

<span style="font-size:18px;">//解析JSON数组(带有key值)
	public  void    analysejsonskey(String jsonstring) throws JSONException{
          JSONObject  jsonobject = new JSONObject(jsonstring);
          JSONArray   jsonarray = jsonobject.getJSONArray("Person");           //获得key所带有的value值
          for(int i = 0;i < jsonarray.length(); i++){
		    	 JSONObject   jsonobject2 =  jsonarray.getJSONObject(i);      //json数组中有多个json对象
		         String name  =   jsonobject2.getString("name");
		         String sex  = jsonobject2.getString("sex");
		          int age  =  jsonobject2.getInt("age");
		          Log.i(TAG, name + sex + age);
		     }
          
	}</span>

结果 :小明0男025 小明1男126 小明2男227 小明3男328 小明4男429

2.3 符合1.3的JSON数据格式的封装和解析

      封装函数

<span style="font-size:18px;">//封装单独JSON(不带有key值)
	         public  String   createJsonnokey() throws JSONException{
		    	   
   	          String   json;
   	          JSONObject   jsonobject = new JSONObject();
   	          JSONObject   jsontostring = new JSONObject();
   	          jsonobject.put("name", "小明");
   	          jsonobject.put("sex", "男");
   	          jsonobject.put("age", 25);
   	          Log.i(TAG, jsonobject.toString());
   	          return jsonobject.toString();
   	     
     }</span>
 结果 :{"sex":"男","age":25,"name":"小明"}   

   解析函数

<span style="font-size:18px;">	//解析单独JSON(不带有key值)
	public  void    analysejsonnokey(String jsonstring) throws JSONException{
             JSONObject  json = new JSONObject(jsonstring);
             String  name  = json.getString("name");
  		     String  sex  =  json.getString("sex");
  		     int  age = json.getInt("age");
  		     Log.i(TAG, name + sex + age);
	}</span>

结果 :小明男25

2.4 符合1.4的JSON数据格式的封装和解析

      封装函数

<span style="font-size:18px;"> //封装JSON数组(不带有key值)
	         public  String   createJsonsnokey() throws JSONException{
	        	      String   json;
	    	          JSONArray     jsonarray   = new JSONArray();
	    	          JSONObject   jsontostring = new JSONObject();
	    	          for(int i = 0 ; i < 5 ;i++){     //封装5个json,构成一个数组
	    	         JSONObject   jsonobject = new JSONObject();  
	    	          jsonobject.put("name", "小明" + i);
	    	          jsonobject.put("sex", "男" + i );
	    	          jsonobject.put("age", 25 + i);
	    	          jsonarray.put(jsonobject);
	    	          }
	    	      Log.i(TAG, jsonarray.toString());
	    	      return  jsonarray.toString();
	         }
	   </span>
 结果 :[{"sex":"男0","age":25,"name":"小明0"},{"sex":"男1","age":26,"name":"小明1"},{"sex":"男2","age":27,"name":"小明2"},{"sex":"男3","age":28,"name":"小明3"},{"sex":"男4","age":29,"name":"小明4"}]

  解析函数

<span style="font-size:18px;">//解析JSON数组(不带有key值)
	public  void    analysejsonsnokey(String jsonstring) throws JSONException{
                   
		    JSONArray  jsonarray =  new JSONArray(jsonstring);
		    for(int i = 0 ; i < jsonarray.length(); i ++){
		    	String s = String.valueOf(jsonarray.get(i));
		    	JSONObject  jsonobject = new JSONObject(s);
		    	 String  name  = jsonobject.getString("name");
	  		     String  sex  =  jsonobject.getString("sex");
	  		     int  age = jsonobject.getInt("age");
	  		     Log.i(TAG, name + sex + age); 
		    }
</span>

结果 :小明0男025 小明1男126 小明2男227 小明3男328 小明4男429

以上就是分别对四种json数据格式的封装和解析,亲测可以使用。哪里有错,还请大家多多提醒,希望共同学习。

源代码地址:http://download.csdn.net/detail/danielntz/9503438







       

          




展开阅读全文

没有更多推荐了,返回首页