在写APP接口时,遇到复杂参数的上行下行,之前考虑最多的就是List,Map传递,但是考虑到通用性,决定统一使用JSON解决APP与接口的交互问题
JSONObject和JSONArray与String字符串之间的转换,很好用
public static void main(String[] args) {
JSONArray parseArray = JSONArray.parseArray("[ {\"shopId\":12,\"couponId\":13,\"freightId\":12,goods:[{\"id\":1,\"skuId\":2,\"goodname\":\"包包\",\"count\":12}]}{\"shopId\":12,\"couponId\":13,\"freightId\":12,goods:[{\"id\":1,\"skuId\":2,\"goodname\":\"包包\",\"count\":12}]}]");
JSONObject jsonObject = parseArray.getJSONObject(0);
JSONArray jsonArray = jsonObject.getJSONArray("goods");
JSONObject jsonObject2 = jsonArray.getJSONObject(0);
System.out.println(jsonObject.getString("shopId")+jsonObject2.getString("goodname"));
System.out.println(jsonObject.getString("aa"));
Set<String> jSet=new HashSet<>();
jSet.add(jsonObject.getString("aa"));
jSet.add(jsonObject.getString("aa"));
jSet.remove(null);
for (String string : jSet) {
System.out.println(string);
}
System.out.println(jSet.size());
}
在写JSP页面时,前后台也可以使用JSON进行参数传递
varpartTInfArr = newArray; //首先定义一个数组
varpartTInfStr = {}; //再定义一个空对象
varuserId = 'aa';//用户Id 然后再向对象里面放值
var userName = 'bb';//用户名称
partTInfStr.userId = userId;
partTInfStr.userName =userName;
partTInfArr.push(partTInfStr); //之后再把赋值后的对象放在数组里面
传值的时候再JSON.stringify(partTInfArr)就可以了
这里要注意一点就是前台有中文需要编码一下 不然会乱码
data:{'partTInfArr':encodeURIComponent(JSON.stringify(partTInfArr))},
后台接收:
String partTInfArr=request.getParameter("partTInfArr");
List
partTInfArrList = JSONArray.
parseArray
(partTInfArr,CfgUserPartTimeEntity.
class
);
或者
String batchArr=request.getParameter("batchArr");
JSONArray batchList = JSONArray.fromObject(batchArr);