一次后端请求第三方Api接口地址,对于返回Json结果的解析

因为最近公司业务需求,需要对接摄像头管理平台第三方Api,所以遇到了很多坑,做个笔记记录一下
一次后端请求第三方Api接口地址,对于返回Json结果的解析_第1张图片
上面图片是请求第三方接口返回的数据集合,是一个Json格式的 但是是以集合的形式进行。

获取方法

因为虽然是Json但是他包裹的比较深,而且看到他返回的结果跟集合一样,所以按照他一层一层的进行解析,拿到数据。

JSONObject jsonObject = new JSONObject(res.toString());
//获取第一层
JSONObject A1 = jsonObject.getJSONObject("EasyDarwin");
//获取第二层
JSONObject A2 = A1.getJSONObject("Body");
//获取第三层
JSONArray devices = A2.getJSONArray("Channels");
List list = new ArrayList<>();
if (devices.length() > 0) {
	for (int i = 0; i < devices.length(); i++) {
		JSONObject device = devices.getJSONObject(i);
		Map<String, String> map = new HashMap<>();
		map.put("ChannelID", device.get("ChannelID").toString()); //通道号
		map.put("ChannelType", device.get("ChannelType").toString()); //通道接入类型
		map.put("Name", device.get("Name").toString()); //通道名称
		map.put("IP", device.get("IP").toString()); //通道IP地址
		map.put("Port", device.get("Port").toString()); //通道端口
		map.put("GBDeviceID", device.get("GBDeviceID").toString()); //国标设备IP
		map.put("GBChannelID", device.get("GBChannelID").toString()); //国标通道id
 		list.add(map);
}
 return new Result(true, StatusCode.OK, "查询成功", list);

第二种返回格式

一次后端请求第三方Api接口地址,对于返回Json结果的解析_第2张图片
可以从上面图中可以看到,返回的数据结构又进行了改变,没有像上面一样有很多层~
实现代码如下:

				JSONObject jsonObject = new JSONObject(res.toString());
                //获取第一层
                JSONObject A1 = jsonObject.getJSONObject("EasyDarwin");
                //获取第二层
                JSONObject devices = A1.getJSONObject("Body");
                list = new ArrayList<>();
                Map<String, String> map = new HashMap<>();
                map.put("ChannelID", devices.get("ChannelID").toString()); //通道ID
                map.put("ChannelName", devices.get("ChannelName").toString()); //通道名称
                map.put("DeviceID", devices.get("DeviceID").toString()); //设备ID
                map.put("DeviceType", devices.get("DeviceType").toString()); //接入协议
                map.put("SnapURL", devices.get("SnapURL").toString()); //快照地址
                map.put("URL", devices.get("URL").toString()); //直播链接
                list.add(map);
            }
            return new Result(true, StatusCode.OK, "查询成功", list);
        }
        return new Result(false, StatusCode.GETDATA_OPERATION_FAIL, "查询失败");

这就是我解析返回Json格式的方法,写博客就是为了做笔记,方便自己以后忘记的时候回来查看,巩固知识点~

你可能感兴趣的:(java入门,java,java基础,json,java,开发语言)