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

ColdFusion:如何在cfloop中正确显示JSON子数组坐标

解决NOAA天气API坐标解析失败问题

问题根源

NOAA天气API返回的geometry.coordinates是嵌套数组结构(典型结构为[[[经度1,纬度1], [经度2,纬度2], ...]]),你的原代码只做了一层循环,无法正确解析深层的坐标对,甚至可能因为部分预警无geometry数据导致空指针错误。

修正后的代码

替换原有的坐标循环代码段,加入空值判断并处理嵌套层级:

<!-- 先判断geometry是否存在,避免空指针错误 -->
<cfif StructKeyExists(myArrayObj[i], "geometry") AND IsArray(myArrayObj[i].geometry.coordinates)>
    <strong>Coordinates:</strong><br>
    <!-- 循环外层多边形数组 -->
    <cfloop from="1" to="#ArrayLen(myArrayObj[i].geometry.coordinates)#" index="poly">
        <!-- 循环当前多边形下的所有坐标对 -->
        <cfloop from="1" to="#ArrayLen(myArrayObj[i].geometry.coordinates[poly])#" index="coord">
            经度: #myArrayObj[i].geometry.coordinates[poly][coord][1]#, 纬度: #myArrayObj[i].geometry.coordinates[poly][coord][2]#<br>
        </cfloop>
    </cfloop>
</cfif>

关键说明

  • 空值判断:用StructKeyExists和IsArray确保geometry和coordinates存在,避免因部分预警无地理数据导致报错。
  • 嵌套循环:第一层循环处理多边形(部分预警可能包含多个区域多边形),第二层循环提取每个多边形里的经纬度坐标对(坐标对数组的第一个元素是经度,第二个是纬度)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:16:28