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
相关产品推荐
相关产品推荐

