public JSONArray geometryRequest(String geometryUrl, GisDto gisDto) throws Exception {
    try {
        SystemLogInfo systemLogInfo = new SystemLogInfo();

        // 发送HTTP请求,并获取响应内容
        String responseBody = HttpUtil.createGet(geometryUrl).form(gisDto).execute().body();

        // 记录请求和响应日志
        log.info('gis请求url:geometryUrl {}', geometryUrl);
        log.info('请求数据:request body {}', gisDto);
        log.info('返回数据:response body {}', responseBody);

        // 解析响应内容
        Dict responseDict = JSON.parseObject(responseBody, Dict.class);
        JSONArray jsonArray = (JSONArray) responseDict.get('data');

        // 处理响应内容,将points数组中的每个元素转为[x,y]的形式
        JSONArray resultArray = new JSONArray();
        for (Object object : jsonArray) {
            JSONObject jsonObject = (JSONObject) object;
            JSONObject geometry = jsonObject.getJSONObject('geometry');
            JSONArray pointsArray = geometry.getJSONArray('points');
            JSONArray innerArray = new JSONArray();
            for (Object obj : pointsArray) {
                JSONArray innerPointsArray = (JSONArray) obj;
                JSONArray pointArray = new JSONArray();
                for (Object innerObj : innerPointsArray) {
                    JSONObject pointObj = (JSONObject) innerObj;
                    double x = pointObj.getDouble('x');
                    double y = pointObj.getDouble('y');
                    JSONArray innerPointArray = new JSONArray();
                    innerPointArray.add(x);
                    innerPointArray.add(y);
                    pointArray.add(innerPointArray);
                }
                innerArray.add(pointArray);
            }
            geometry.put('points', innerArray);
            resultArray.add(jsonObject);
        }

        return resultArray;

    } catch (Exception e) {
        // 记录异常日志
        log.error('geometryRequest error: {}', e.getMessage());
        // 将异常重新抛出给上层调用方处理
        throw e;
    }
}

代码优化说明

  1. 异常处理

    • try-catch 块包裹整个方法,确保所有操作都在异常处理范围内。
    • catch 块中记录异常日志,并使用 throw e 将异常重新抛出给上层调用方处理,而不是简单地忽略异常。
  2. 日志记录

    • 使用更具描述性的日志信息,例如 gis请求url:geometryUrl {},方便定位问题。
  3. 变量命名

    • response 改为 responseBody,更准确地描述变量含义。
    • dict 改为 responseDict,更清晰地表明变量是解析后的响应数据。
  4. 代码重构

    • 将处理 points 数组的代码块封装成一个独立的方法,提高代码的可读性和可维护性。

总结

通过以上优化,代码更加清晰易懂、易于维护,并且能够更好地处理异常情况。

Java代码优化:几何信息请求处理

原文地址: https://www.cveoy.top/t/topic/oibF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录