一起Talk Android吧(第三百四十七回:解析JSON数组二)

Posted talk_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第三百四十七回:解析JSON数组二)相关的知识,希望对你有一定的参考价值。

各位看官们,大家好,上一回中咱们说的是android中解析JSON数组的例子,这一回中咱们继续介绍此例子。闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们在本章回中继续介绍如何解析JSON数组,不过本章回中JSON数组与上一章回中的不同,主要区别在于添加了标量类型的数组成员。我们将这种数组叫作普通JSON数组,其特点为数组中的成员是自定义的,成员包含普通标量和JSONObject对象.下面是程序中使用的JSON数组;

["id",23,"id":11,"name":"jam","price":3.5,"path":"a/b/c"]

该数组中的标量成员是新添加的,其它成员是JSONObject,成员的类型我们在前面章回中介绍过。下面示例程序,请大家参考:

   private void parseJsonArrayByJavaNative() 

       String jsonString = "\\n" +
               "[\\"id\\",23,\\"id\\":11,\\"name\\":\\"jam\\",\\"price\\":3.5,\\"path\\":\\"a/b/c\\"]\\n";
       try 
           JSONArray jsonArray = new JSONArray(jsonString);
           for(int i=0; i<jsonArray.length(); ++i) 
               //如果数组中的内容是JSONObject,就按照JSONObject的方式解析
               if(jsonArray.get(i) instanceof JSONObject) 
                   try 
                       JSONObject jsonObject = jsonArray.getJSONObject(i);
                       JsonBeanType jsonBeanObject = new JsonBeanType();

                       jsonBeanObject.setId(jsonObject.optInt("id"));
                       jsonBeanObject.setName(jsonObject.optString("name"));
                       jsonBeanObject.setPrice(jsonObject.optDouble("price"));
                       jsonBeanObject.setPath(jsonObject.getString("path"));

                       Log.d(TAG, "parseJsonArrayByJavaNative: "+jsonBeanObject.toString());
                    catch (JSONException e) 
                       Log.d(TAG, "parseJsonArrayByJavaNative: Exception: "+e);
                   
                else  //如果数组中的内容是普通标量,可以从JSON数组中直接获取到,不需要解析
                   Log.d(TAG, "parseJsonArrayByJavaNative: i = "+i+" "+jsonArray.get(i));
               
           
        catch (JSONException e) 
           e.printStackTrace();
       

   

上面程序中解析JSON对象的代码我们在前面章回中介绍过,不多做介绍,我们重点看一下对JSON数组中标题成员的解析,其实标量成员直接获取后就可以使用,不需要做解析,这点在程序的注释中也写下了。下面是JSON数组的树状图,以及程序的运行结果,从中可以看出程序已经正确地解析出了JSON数组中的内容。

 [
  "id",
  23,
  
    "id": 11,
    "name": "jam",
    "price": 3.5,
    "path": "a/b/c"
  
]

解析结果如下:

arseJsonArrayByJavaNative: i = 0 id
 parseJsonArrayByJavaNative: i = 1 23
 parseJsonArrayByJavaNative: JsonBeanTypeid=11, name='jam', price=3.5, path='a/b/c'

看官们,关于Android中解析JSON数组的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

以上是关于一起Talk Android吧(第三百四十七回:解析JSON数组二)的主要内容,如果未能解决你的问题,请参考以下文章

一起Talk Android吧(第三百四十九回:解析JSON数组四)

一起Talk Android吧(第三百四十六回:解析JSON数组一)

一起Talk Android吧(第三百八十七回:LiveData)

一起Talk Android吧(第三百八十七回:LiveData)

一起Talk Android吧(第三百四十回: Android中的Retrofit)

一起Talk Android吧(第三百四十四回: JSON概述)