在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(); //step1
valueobj1.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); //step2
KeyObj1.put("operatorNum", operatornum); //step3
String jsondata = KeyObj1.toString(); //step4
Log.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>();//step1
try { JSONArray jsonArray = obj.getJSONArray(key1); //step2 int DownloadCount = obj.getInt(key2);
Log.d("downloadCount", String.valueOf(DownloadCount)); for (int i = 0; i < jsonArray.length(); i++) { //step3
String 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;
}

Android编程心得-JSON使用心得(二)的更多相关文章

  1. Android编程心得-在任意类中获取当前屏幕宽高

    进行Android编程时,很多时候都需要获取当前屏幕的宽度与高度,但是当我们需要在别的类中调用屏幕宽高时,直接用原来的方法是不行的,下面我来介绍如何在任意类中调用宽度高度的两种方法. public v ...

  2. 《Android编程权威指南》

    <Android编程权威指南> 基本信息 原书名:Android programming: the big nerd ranch guide 原出版社: Big Nerd Ranch Gu ...

  3. Android Volley获取json格式的数据

    为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...

  4. Android PHP 通过JSON进行数据交互

    一.首先是Android客户端解析PHP返回的JSON数据 1.PHP代码(这里用到了数据库,如果没有准备数据库的话,可以自定义字符串) <?php $link=mysql_connect(SA ...

  5. Android BLE与终端通信(二)——Android Bluetooth基础科普以及搜索蓝牙设备显示列表

    Android BLE与终端通信(二)--Android Bluetooth基础搜索蓝牙设备显示列表 摘要 第一篇算是个热身,这一片开始来写些硬菜了,这篇就是实际和蓝牙打交道了,所以要用到真机调试哟, ...

  6. 《Android编程权威指南》PhotoGallery应用梳理

    PhotoGalley是<Android编程权威指南>书中另外一个重要的应用.       

  7. Android编程权威指南第三版 第32章

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

  8. 读《Android编程权威指南》

    因为去年双十二购买了一折的<Android 编程权威指南(第一版)>,在第二版出来后图灵社区给我推送了第二版的优惠码,激动之余就立马下单购买电子书,不得不说Big Nerd Ranch G ...

  9. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

随机推荐

  1. 在sublime text 3中安装中文支持

    1.安装package control 使用control+~打开终端,然后输入以下内容并确定: import  urllib.request,os;pf='Package Control.subli ...

  2. 面试题,自己写写dome总是好的

    1.完成如下图所示的布局 <html> <head> <meta http-equiv="Content-Type" content="te ...

  3. PHP学习系列(1)——字符串处理函数(5)

    31.ord() 函数返回字符串第一个字符的 ASCII 值. 语法:ord(string) 例子 <?php echo ord("h"); echo ord("h ...

  4. C 猜数游戏

    char c; clock_t start,end; time_t a,b; double var; int i,guess; srand(time(NULL));loop: printf(" ...

  5. 转:从BeagleBone谈AM335x硬件系统设计

    链接:http://blog.chinaunix.net/uid-730738-id-3266690.html    作者:chenzhufly 从BeagleBone谈AM335x硬件系统设计 日期 ...

  6. os8 location authorization 错误.

    今天在XCode6上打开之前写的地图时,给我报这个错 location authorization 去网上查了一番,才知道Xcode6对地图的设置稍有修改 在stackoverflow上找到了答案 i ...

  7. Android Studio builde.gradle 配置说明

    //声明是Android应用程序 apply plugin: 'com.android.application' android { //编译SDK版本 compileSdkVersion 21 bu ...

  8. Codeforces 566F Clique in the Divisibility Graph

    http://codeforces.com/problemset/problem/566/F 题目大意: 有n个点,点上有值a[i], 任意两点(i, j)有无向边相连当且仅当 (a[i] mod a ...

  9. inux xsel 拷贝复制命令行输出放在系统剪贴板上

    转载自:http://oldratlee.com/post/2012-12-23/command-output-to-clip 为什么要这么做?直接把命令的输出(比如 grep/awk/sed/fin ...

  10. 1645: [Usaco2007 Open]City Horizon 城市地平线

    1645: [Usaco2007 Open]City Horizon 城市地平线 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 315  Solved: ...