在Android开发中,我们经常会用到JSON来与网络数据进行交互,下面我来介绍如何对JSON数据进行解析与制造

1.当我们需要对如下JSON串进行制造时:

{
"download":["userInfoId","meterNum","rfid","area","clientName","clientAddress"],
"operatorNum":“操作员编号”
}


首先我们分析上面的JSON串 它里面包括download与operatorNum对象。download对象中又包括一个JSON数组,那么首先我们可以将数组的内容按step1向下添加进去

接下来我们就可以把值放入主要的JSON对象中了(step2),接下来就可以将operatorNum的数据放入JSON对象中(step3),执行到step3时我们的JSON对象已经完成,最后

只需要将其转化为字符串就可进行使用了(step3).

public static String buildDownLoadJson(String operatornum)throws JSONException {JSONArray valueobj1 = new JSONArray();  //step1valueobj1.put("userInfoId");valueobj1.put("meterNum");valueobj1.put("rfid");valueobj1.put("area");valueobj1.put("clientName");valueobj1.put("clientAddress");JSONObject KeyObj1 = new JSONObject();//KeyObj1.put("download", valueobj1);   //step2KeyObj1.put("operatorNum", operatornum);  //step3String jsondata = KeyObj1.toString();    //step4Log.i("JSON", jsondata);return jsondata;}




2.当我们需要解析JSON字符串时

{
"downloadCount":条数值,
"download":[{"userInfoId":“用户表顺序”,"meterNum":“表号值”,"rfid":"无线编号",
"area":"小区值","clientName":"客户名称值","clientAddress":”客户地址值”},
{第2条值, 格式同上},……,{第N条值,格式同上}]
}


我们首先同样分析该JSON串,仍然有两个对象,download对象的值仍然是数组,可是与上面制造不同的是,这个里面的数组包括的是多个对象而不是单纯的值,那么这个时

候我们该怎么办呢? 其实首先我们可以考虑着多个对象的值时相同的,那么我可以定义一个模型类,模型类包括userInfoId,meterNum,rfid,area,clientName,clientAddress等字

段值(这个类我就不做赘述,相信大家都明白),接下来就是想主Object中添加值(step2 得到了对应的JSON数组),然后就可以将对应的数组遍历取出它们每一个的值放入list

(step3)



public static List<ReadyTask> getList(String key1, String key2,JSONObject obj) {List<ReadyTask> list = new ArrayList<ReadyTask>();//step1try {JSONArray jsonArray = obj.getJSONArray(key1); //step2int DownloadCount = obj.getInt(key2);Log.d("downloadCount", String.valueOf(DownloadCount));for (int i = 0; i < jsonArray.length(); i++) {  //step3String msg1 = jsonArray.getString(i);JSONObject value = new JSONObject(msg1);ReadyTask rt = new ReadyTask();rt.setRFID(value.getString("rfid"));rt.setMeterID(value.getString("meterNum"));rt.setArea(value.getString("area"));rt.setClientName(value.getString("clientName"));rt.setClientAddress(value.getString("clientAddress"));rt.setUserInfoId(value.getInt("userInfoId"));Log.d("download", msg1);list.add(rt);}} catch (JSONException e) {e.printStackTrace();}return list;}



更多相关文章

  1. android定时器Timer与TimerTask
  2. Android(安卓)省市县 三级联动(android-wheel的使用)
  3. RxJava教程(四)在Android中使用RxJava
  4. Android(安卓)Audio AudioEffect
  5. Android中SharedPreferences使用方法介绍
  6. Android获取当前位置,location为空
  7. 深入浅出RxJava1(四:在Android中使用响应式编程)
  8. Android(安卓)Volley使用之二:Volley请求网络图片
  9. android paint画笔 设置透明度setAlpha及 canvas画布

随机推荐

  1. android studio 中include
  2. R.stamp Error 1
  3. Android 应用程序主动请求Vsync
  4. Android(安卓)Cursor
  5. android 震动
  6. Android 动态设置控件高度
  7. android CTS测试使用方法
  8. Android菜鸟笔记-获取设备信息
  9. 让Android studio支持java8
  10. Android 图片资源的异步加载2