Tasker中提取Azure Maps API返回的streetNameAndNumber字段问题
解决Tasker中提取Azure Maps反向地址数据的问题
正确的Javascriplet代码
首先要解析Tasker返回的JSON字符串,并正确定位streetNameAndNumber字段的层级(Azure Maps反向地址搜索的结果通常嵌套在addresses数组内):
// 解析HTTP请求返回的JSON字符串 var addressResponse = JSON.parse(http_data); // 提取街道名称及门牌号(适配Azure Maps标准返回结构) var streetDetail = addressResponse.addresses[0].address.streetNameAndNumber; // 将结果赋值给Tasker变量%streetNameAndAddress global.set("streetNameAndAddress", streetDetail);
关键注意事项
- 解析JSON字符串:Tasker的
%http_data是原始JSON文本,必须用JSON.parse()转换为可操作的对象,否则无法直接提取字段。 - 确认字段路径:如果你的Azure Maps返回结构有差异,先通过Tasker的
Flash动作输出%http_data,查看实际JSON层级,调整代码中的字段路径。 - 空值处理(可选):为避免播报空内容,可添加兜底逻辑:
var streetDetail = "无法获取当前地址"; if (addressResponse.addresses && addressResponse.addresses.length > 0) { var addr = addressResponse.addresses[0].address; streetDetail = addr.streetNameAndNumber || "无法获取街道及门牌号"; } global.set("streetNameAndAddress", streetDetail); - 变量赋值规则:在Tasker的Javascriplet中,使用
global.set("变量名", 值)赋值,变量名无需加%,Tasker会自动映射为%streetNameAndAddress。
内容的提问来源于stack exchange,提问作者ORDIsBack
相关产品推荐
相关产品推荐

