有的时候后台很好,把一些需要的一些字段全部封装好的jar包,给我,那样我就无需去写字段,我所要做的就是请求数据,然后根据给的jar包内的字段set进入即可。
而有的时候没有这样情况,更多的是直接请求,自己写bean或HashMap等,那样的话有的时候字段比较少,还好说,但是一旦字段超多,那么一个一个填写超级恶心了,
所以有如下方法(采用HashMap键值对的形式来保存获取到的字段里面的数据)。以后台传给的字段作为key值。例如下面的一段json
{
"apiVersion": "1.0",
"code": "0000",
"functionCode": "product.list",
"isSuccess": true,
"message": "成功",
"record": [
{
"brandName": "嘉实多",
"categoryName": "机油",
"disPrice": 320,
"id": 22,
"inPrice": 320,
"normalPrice": 350,
"productAlias": "CB",
"productCode": "10",
"productName": "嘉实多大力士CH-4 18L",
"productPic": "/epeit/20150712/default/fd1f4ce271204c1eba7610b43ad5531c.jpg",
"productTag": "CB-18",
"productVolume": 1,
"promotionStock": 0,
"saleNum": 971,
"stock": 42,
"unit": "桶",
"vipPrice": 310
}
],
"total": 37
}
字段如此之多,我主要的需要部分是record内的数据,所以有
JSONArray object_i = objectproductlist.getJSONArray("record");
for (int i = 0; i < object_i.length(); i++) {
HashMap<String, String> hashmap = new HashMap<String, String>();//保存object_i集合内的一个object
JSONObject jsonObject = object_i.getJSONObject(i);
Iterator<String> keys = jsonObject.keys();//key值
while (keys.hasNext()) {
String key = keys.next();// 获取key值
hashmap.put(key, jsonObject.optString(key));//保存某个key下的数据
}
productlist.add(hashmap);//保存record下的所有objcet(map)
}
如此就省去了写key值得步骤