Android 使用个迭代器解析json
2016-12-22 13:15
351 查看
在Android开发过程中解析json,用到的方式有系统自带的json解析方法,也有gson fastjson。我经常使用的是gson的,通过gsonformat自动生成实体类,但是遇到有些json数据是无法解析的。比如:
发现有的key值是时间,此时遇到这种方式,我采用的是迭代器方式来辅助解析
由于key值可能是动态的(不是固定的字符串)
那么怎么动态的获取key值呢?
JSONObject 对象提供了keys()方法,此方法返回的是一个迭代器。解析到data时,创建list对象,每解析数组里面的一个元素,就创建map,之后加入list中。
Iterator iterator = joData.keys(); // joData是JSONObject对象
while(iterator.hasNext()){
String key = iterator.next() + "";
hashMap.put(key,joData.get(key));
}
arrayList.add(hashMap);
实例:json数据一下为例演示
代码如下:
是不是很简单
发现有的key值是时间,此时遇到这种方式,我采用的是迭代器方式来辅助解析
由于key值可能是动态的(不是固定的字符串)
那么怎么动态的获取key值呢?
JSONObject 对象提供了keys()方法,此方法返回的是一个迭代器。解析到data时,创建list对象,每解析数组里面的一个元素,就创建map,之后加入list中。
Iterator iterator = joData.keys(); // joData是JSONObject对象
while(iterator.hasNext()){
String key = iterator.next() + "";
hashMap.put(key,joData.get(key));
}
arrayList.add(hashMap);
实例:json数据一下为例演示
代码如下:
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class MainActivity extends AppCompatActivity { public static final String json = "{\"code\":200,\"message\":\"\\u65e5\\u671f\\u751f\\u6210\\u5931\\u8d25\"" + ",\"data\":{\"2016-12-21\":[{\"time\":\"05:00~05:59\",\"stu\":\"0\",\"name\":\"123\"}," + "{\"time\":\"06:00~06:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"07:00~07:59\"," + "\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"08:00~08:59\",\"stu\":\"0\",\"name\":\"123\"}" + ",{\"time\":\"09:00~09:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"10:00~10:59\"" + ",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"11:00~11:59\",\"stu\":\"0\",\"name\":\"123\"}" + ",{\"time\":\"12:00~12:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"13:00~13:59\",\"stu\":\"0\"" + ",\"name\":\"123\"},{\"time\":\"14:00~14:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"15:00~15:59\"" + ",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"16:00~16:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"17:00~17:59\",\"stu\":\"0\",\"name\":\"123\"}" + ",{\"time\":\"18:00~18:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"19:00~19:59\",\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"20:00~20:59\",\"stu\":\"0\"" + ",\"name\":\"123\"},{\"time\":\" c892 21:00~21:59\"," + "\"stu\":\"0\",\"name\":\"123\"},{\"time\":\"22:00~22:59\",\"stu\":\"0\",\"name\":\"123\"}]}}"; private List<String> mList=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { //注意此处将json更换为你从服务器返回的json JSONObject jsonObject=new JSONObject(json); JSONObject jsonObject1 = jsonObject.optJSONObject("data"); Iterator<String> keys01 = jsonObject1.keys(); // 应用迭代器Iterator 获取所有的key值 while(keys01.hasNext()){ // 遍历每个key String key01 = keys01.next().toString(); JSONArray array = jsonObject1.optJSONArray(key01); //这个array返回来的json数组就好解析了 JSONArray array1=new JSONArray(array.toString()); for (int i = 0; i < array1.length(); i++) { JSONObject jsonObject2 = array1.optJSONObject(i); String time = jsonObject2.optString("time"); mList.add(time); } //最终的time已经存入了mList集合中 SysoUtils.syso("======mList====>" + mList.toString()); } } catch (JSONException e) { e.printStackTrace(); } } }
是不是很简单
相关文章推荐
- Android使用自带JSONObject解析JSON数据
- android:使用Gon解析解析json
- Android 使用GSON解析JSON 并转换为JAVA对象
- 在 Android 应用程序中使用 Internet 数据 解析 XML、JSON 和 protocol buffers 数据
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- Android网络开发中如何使用JSON进行网络通信---Android JSON数据通讯方法解析
- android中json解析及使用(上)
- Android使用JSON进行数据解析
- android中json解析及使用 (下)
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- Android中使用Gson解析JSON数据
- Android Http通信(使用 标准Java接口)及解析Json
- Android中使用Gson解析JSON数据的两种方法
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据,gson中的JsonReader解析json数据
- Android中使用Gson解析JSON数据
- android端使用json解析调用Google Directions API返回结果的实例
- Android的数据处理:使用annotation实现JSON字符串解析为java对象
- Android 编程下使用 Google 的 Gson 解析 Json
- 在 Android 应用程序中使用 Internet 数据 解析 XML、JSON 和 protocol buffers 数据
- Android中使用Gson解析JSON数据