今天在写代码的时候,循环list集合数据,原本是使用for语句,但是jdk8中的lambda表达式中的list.forEach(action)更加能表达出循环的意义,也就是业务逻辑,所以就对原先的代码进行了改造。

 先附上数据格式:

 

{
	"data": {
		"ERPSaleData": {
			"cashier": "15862957096",
			"custId": 96,
			"deviceType": 2,
			"flagDiscount": 0,
			"membFlag": 0,
			"returnReason": "现金正常退款",
			"orderType": 1,
			"oriAmount": 200,
			"payType1": 0,
			"receiveAmount": 200,
			"saleDetails": [{
				"goodsAmount": 200,
				"goodsId": "9696150156975187161887",
				"goodsName": "储物柜",
				"goodsNum": 1,
				"goodsPrice": 100
			},
			{
				"goodsAmount": 200,
				"goodsId": "9696150156975187161888",
				"goodsName": "文具",
				"goodsNum": 1,
				"goodsPrice": 100
			}],
			"type1Amount": "200",
			"rootId":166,
			"mac":"fef5b0f5eb63dd9889933533628d9ca0",
			"uuid":"8d1fc351-ddfb-4564-889c-8eb68ee1d751",
			"onsitetime":"2018-02-05 10:07:37"
		}
	}
}

原来要循环saleDetails数组格式的数据,JSONArray saleDetails = erpSaleDataJSON.getJSONArray("saleDetails");

取出来的是JSONArray,再用lambda表达式中的list.forEach(action)处理的时候,发现list.forEach(saleDetailObject ->{})

里面的saleDetailObject是object类型的,并不是JSONObject类型的,就不好取到对象里面的属性,刚开始想法是直接在定

list.forEach(saleDetailObject -> {})的时候把saleDetailObject直接强制转成JSONObject类型,但是发现并不可以,所以只能

多写一两步。

第一步:先获取jsonArray数组

SONArray saleDetails = erpSaleDataJSON.getJSONArray("saleDetails");
 第二步:将数组转换成字符串

String js = JSONObject.toJSONString(saleDetails,SerializerFeature.WriteClassName);
 第三步:将字符串转换成List集合

List<JSONObject> list = JSONObject.parseArray(js,JSONObject.class);
当然也可以直接换成相对应的List<JavaBean>格式。

最后就可以使用list.forEach(saleDetailObject -> {})来处理自己的业务逻辑了。








GitHub 加速计划 / fastj / fastjson
3
1
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:4 个月前 )
c942c834 - 2 年前
5bc4709b - 2 年前
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐