一起Talk Android吧(第三百四十六回:解析JSON数组一)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第三百四十六回:解析JSON数组一)相关的知识,希望对你有一定的参考价值。
各位看官们,大家好,上一回中咱们说的是android中解析JSON对象的例子,这一回中咱们介绍的例子是解析JSON数组。闲话休提,言归正转。让我们一起Talk Android吧!
看官们,我们在前面章回中介绍了JSON数组的格式,在本章回中我们将介绍如何去解析JSONv数组,也就是把JSON数组转换成Java对象,下面是具体的操作:
- 使用Json字符串创建JSONArray对象;具体的操作如下:自已定义一个字符串,然后复制到AST中,这次使用的字符串如下:
["id":11,"name":"jam","price":3.5,"path":"a/b/c","id":33,"name":"Nik","price":7.6,"path":"e/a/k"]
- 通过JSONArray的getJSONObject()或者optJSONObject()方法获取数组中的JSON对象,这些方法的参数是JSON数组的索引值;
- 获取JSON对象后还需要解析对象,解析方法参考上一章回的内容。
下是具体的示代码,请大家参考:
private void parseJsonArrayByJavaNative()
String jsonArrayString = "[\\"id\\":11,\\"name\\":\\"jam\\",\\"price\\":3.5,\\"path\\":\\"a/b/c\\",\\"id\\":33,\\"name\\":\\"Nik\\",\\"price\\":7.6,\\"path\\":\\"e/a/k\\"]";
List<JsonBeanType> list = new ArrayList<>();
try
JSONArray jsonArray = new JSONArray(jsonArrayString);
JSONObject jsonObject;
for(int i=0; i<jsonArray.length(); ++i)
jsonObject = jsonArray.optJSONObject(i);
if(jsonObject != null)
JsonBeanType jsonBeanObject = new JsonBeanType();
jsonBeanObject.setId(jsonObject.optInt("id"));
jsonBeanObject.setName(jsonObject.optString("name"));
jsonBeanObject.setPrice(jsonObject.optDouble("price"));
jsonBeanObject.setPath(jsonObject.getString("path"));
list.add(jsonBeanObject);
catch (JSONException e)
e.printStackTrace();
Log.d(TAG, "parseJsonArrayByJavaNative: "+list.toString());
上面程序中的JsonBeanType在上一章回中介绍过,这里不再列出。程序中使用的JSON数组包含两个JSON对象,它们将会被解析成两个Java对象,因此我们创建了一个List来存放这两个Java对象。
把上面的程序放到Android的工程中,然后添加到Button的监听器里,编译程序并且点击Button就可以看到以下运行结果 :
parseJsonArrayByJavaNative: [JsonBeanTypeid=11, name='jam', price=3.5, path='a/b/c', JsonBeanTypeid=33, name='Nik', price=7.6, path='e/a/k']
看官们,关于Android中解析JSON数组的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第三百四十六回:解析JSON数组一)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第三百四十九回:解析JSON数组四)
一起Talk Android吧(第三百四十七回:解析JSON数组二)
一起Talk Android吧(第三百四十回: Android中的Retrofit)
一起Talk Android吧(第三百四十四回: JSON概述)