接口返回的为数组形式的json 字符串

返回数据示例
5. {  
6.     "msg" : "成功",  
7.     "code" : "200",  
8.     "status" : "0",
16.      "data" : [ {
17.                  "mac":"00:00:00:00:00:00",
18.                  "data:[{
19.                       "intWhileId":"1",
20.                       "intStatus":"2",
21.                       "strDescription":""
22.                     },
23.                   {
24.                       "intWhileId":"2",
25.                       "intStatus":"2",
26.                       "strDescription":""
9.                     }]
10.                 },
27.               {
28.                  "mac":"11:11:11:11:11:11",
29.                  "data:[{
30.                       "intWhileId":"3",
31.                       "intStatus":"2",
32.                       "strDescription":""
33.                     },
34.                   {
35.                       "intWhileId":"4",
36.                       "intStatus":"3",
37.                       "strDescription":"失败,原因"
11.                     }]
12.                 }
13. }

 

public void getAssetWhiteId(){//每隔6小时执行一次
		String strMacs= "";
		//得到要获取白名单审核状态的mac
		List<AssetWhite> selectAssetWhiteMac = assetWhiteDao.selectAssetWhiteMac();
		for (AssetWhite assetWhite : selectAssetWhiteMac) {
			strMacs += assetWhite.getStrDeviceMac() + ",";
		}
		log.info("---------strMacs------------"+strMacs);
		String requestUrl = "/while/appendWhileCheck";
		/*下面的时进行上传云探进行任务创建*/
		if ("".equals(strMacs)) {
			log.info("---------设备mac不能为空---------");
		}
		JSONObject json = new JSONObject();
		json.put("strToken", strMacs.subSequence(0, strMacs.length()-1));
		json.put("strMacs", strMacs.subSequence(0, strMacs.length()-1));
		
		try {
		JSONObject jsonReturn = PubFunc.sendToYT(requestUrl, json);
		log.info("------------------获取白名单审核状态--------------------------------"+jsonReturn);
		if ("0".equals(jsonReturn.getString("status"))) {
		JSONArray array = jsonReturn.getJSONArray("data");
		array = JSONArray.parseArray(new String(array.toJSONString().getBytes("UTF-8"), "UTF-8"));
		HashMap<String, Object> params = new HashMap<String, Object>();	
		for (int i = 0; i < array.size(); i++) {
			 JSONObject object = (JSONObject) array.get(i);
			 log.info("----------object------------"+object);
	       String mac=object.getString("mac");
	       JSONArray dataArray = object.getJSONArray("data");
	         for(int j=0;j<dataArray.size();j++){
	        	 JSONObject dataObject = (JSONObject) dataArray.get(j);
	        	 int    intWhileId = dataObject.getIntValue("intWhileId");//白名单id
	        	 int    intStatus = dataObject.getIntValue("intStatus");
	        	 String failureReason = dataObject.getString("strDescription");
	        	 log.info("--获取到白名单状态---------intWhileId---"+intWhileId+"--------intStatus---"+intStatus+"---------failureReason--"+failureReason+"--------mac---"+mac);
	        	 params.clear();
	        	 params.put("strDeviceMac", mac);
	        	 params.put("id", intWhileId);
	        	 params.put("intStatus", intStatus);
	        	 params.put("failureReason", failureReason);
	        	 assetWhiteDao.updateAuditStatus(params);
	         }
		} 
		
		}
		}catch (Exception e) {
			log.error("error:" , e);
		} 
		
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是代码实现: ```python import json import base64 from Crypto.Cipher import SM4 # json数据 data = {"name": "Alice", "age": 20} # 转成json字符串 json_str = json.dumps(data) # 加密密钥和向量 key = b'1234567890abcdef' iv = b'1234567890abcdef' # 创建加密器 cipher = SM4.new(key=key, mode=SM4.MODE_CBC, iv=iv) # 加密填充方式 # SM4加密算法中的填充方式有三种:PKCS5Padding、PKCS7Padding、ZeroPadding # 这里使用的是PKCS5Padding,即补齐位数的字节数为缺少的字节数,例如缺少2个字节,则补齐2个2。 BS = 16 # 块的大小为16字节 pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS).encode() json_str = pad(json_str) # 加密 ciphertext = cipher.encrypt(json_str) # 转成base64字符串 base64_str = base64.b64encode(ciphertext).decode() # 解密 ciphertext = base64.b64decode(base64_str.encode()) plaintext = cipher.decrypt(ciphertext) # 去掉填充的字符 unpad = lambda s: s[0:-ord(s[-1:])] plaintext = unpad(plaintext) # 转成json json_data = json.loads(plaintext.decode()) print(json_data) ``` 加密填充方法中,我们使用了PKCS5Padding,其具体实现方法为: 1. 计算需要填充的字节数n = block_size - len(data) % block_size 2. 如果n为0,则不需要填充;如果n为block_size,则需要填充一个完整的块 3. 否则,填充n个字节,每个字节的值为n 比如,假设块的大小为8字节,原始数据为"hello",则需要填充3个字节,填充后的数据为"hello\x03\x03\x03"。解密时,只需要把最后面的\x03\x03\x03去掉即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值