Android編程心得-JSON使用心得(二)

在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;
	}



發佈了44 篇原創文章 · 獲贊 8 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章