You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS技术问询:从Rest API获取JSON后调用多边形绘制函数

AngularJS数组处理与Rest API JSON配置解析常见问题解答

看起来你在AngularJS里处理数组、解析Rest API返回的JSON配置时遇到了状况,我帮你梳理几个常见的坑和对应的解决思路,结合你给出的代码来分析:

1. 最常见:spotcam.jsonconfig未加载完成就调用

Rest API请求是异步的,很可能你触发setPolygone的时候,接口还没返回数据,导致spotcam.jsonconfig是undefined或者null。

解决办法:

  • 确保API请求完成后再允许调用该函数:
    // 假设你用$http请求Rest API
    $http.get('/api/get-json-config')
      .then(function(response) {
        spotcam.jsonconfig = response.data;
        // 可以在这里初始化相关状态,比如按钮可用状态,避免用户提前点击
        $scope.configLoaded = true;
      });
    
  • 在setPolygone里加前置校验,避免报错中断流程:
    $scope.setPolygone = function (id) {
      if (!spotcam || !spotcam.jsonconfig) {
        console.error('JSON配置还没加载完成哦');
        return;
      }
      console.log(spotcam.jsonconfig);
      // 后续解析逻辑
    };
    

2. JSON解析报错(SyntaxError)

如果spotcam.jsonconfig本身已经是JavaScript对象(而不是JSON字符串),再调用JSON.parse()就会直接报错。

解决办法:

先判断类型,再决定是否解析:

$scope.setPolygone = function (id) {
  let parsedConfig;
  try {
    if (typeof spotcam.jsonconfig === 'string') {
      parsedConfig = JSON.parse(spotcam.jsonconfig);
    } else if (typeof spotcam.jsonconfig === 'object') {
      parsedConfig = spotcam.jsonconfig;
    } else {
      console.error('配置数据类型无效,既不是字符串也不是对象');
      return;
    }
    $scope.DrawPolygon(id, parsedConfig, true);
  } catch (e) {
    console.error('JSON解析出错了:', e);
  }
};

3. DrawPolygon处理数组时的异常

如果DrawPolygon是用来处理数组的函数,还要注意解析后的配置是否符合它的预期结构:

  • 先打印确认解析后的数据类型:
    console.log('解析后的配置:', parsedConfig, '是否为数组:', Array.isArray(parsedConfig));
    
  • 增加数组合法性校验:
    if (!Array.isArray(parsedConfig) || parsedConfig.length === 0) {
      console.warn('配置数组为空或者不是数组类型,无法绘制多边形');
      return;
    }
    

内容的提问来源于stack exchange,提问作者sani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:34:54