Javascript 使用jQuery从Google地理编码API JSON响应中获取基于类型的值
我正在从谷歌地理编码API获取JSON响应 其格式如下:Javascript 使用jQuery从Google地理编码API JSON响应中获取基于类型的值,javascript,jquery,json,google-maps,foreach,Javascript,Jquery,Json,Google Maps,Foreach,我正在从谷歌地理编码API获取JSON响应 其格式如下: { "results" : [ { "address_components" : [ { "long_name" : "Department of Information science and engineering", "short_name" : "Department of Information science
{
"results" : [
{
"address_components" : [
{
"long_name" : "Department of Information science and engineering",
"short_name" : "Department of Information science and engineering",
"types" : [ "premise" ]
},
{
"long_name" : "Gokul",
"short_name" : "Gokul",
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"long_name" : "Hubballi",
"short_name" : "Hubballi",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Dharwad",
"short_name" : "Dharwad",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Karnataka",
"short_name" : "KA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "India",
"short_name" : "IN",
"types" : [ "country", "political" ]
},
{
"long_name" : "580030",
"short_name" : "580030",
"types" : [ "postal_code" ]
}
现在我可以使用
"Postal Code:" + json.results[0].address_components[6].long_name
但从我的研究中,我发现地址组件[6]
可能并不总是相同的数据。因此,我希望根据类型获取值,以便始终获得正确的数据
现在我找到了一种使用php的方法:
foreach ($jsondata["results"] as $result) {
foreach ($result["address_components"] as $address) {
if (in_array("sublocality", $address["types"])) {
$city = $address["long_name"];
}
}
}
但我不知道如何迭代每个结果并根据JavaScript/JQuery中的类型获取值
有人能告诉我它是如何完成的吗?您可以使用jQuery的
$.each(jsondata.results,(index,result)=>{//{
if(typeof address.types.sublocality!=“undefined”){//检查值是否在数组中
var city=地址.long\u名称;
}
});
});
您可以使用jQuery的
$.each(jsondata.results,(index,result)=>{//{
if(typeof address.types.sublocality!=“undefined”){//检查值是否在数组中
var city=地址.long\u名称;
}
});
});
Javascript
var x={
“结果”:[
{
“地址组件”:[
{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
},
{
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
},
{
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
},
{
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
},
{
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}
]
}
]
}
x、 结果.forEach(函数(元素、索引){
元素[Object.keys(元素)].forEach(函数(元素,i){
var city=(el.types.includes('sublocality'))?el.long_name:'None';
控制台日志(城市)
});
})
Javascript
var x={
“结果”:[
{
“地址组件”:[
{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
},
{
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
},
{
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
},
{
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
},
{
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}
]
}
]
}
x、 结果.forEach(函数(元素、索引){
元素[Object.keys(元素)].forEach(函数(元素,i){
var city=(el.types.includes('sublocality'))?el.long_name:'None';
控制台日志(城市)
});
})
您可以使用下面给定的代码(纯JavaScript),它实现了与使用PHP实现的相同的功能。运行代码段以查看输出
var结果=[{
“地址组件”:[{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
}, {
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
}, {
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
}, {
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
}, {
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
}, {
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
}, {
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}]
}];
对于(结果的结果){
for(结果的地址。地址\u组件){
if(address.types.indexOf(“子本地”)!=-1){
var city=地址.long\u名称;
警报(城市);
}
}
}
您可以使用下面给定的代码(纯JavaScript),它实现了与使用PHP实现的相同的功能。运行代码段以查看输出
var结果=[{
“地址组件”:[{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
$.each(jsondata.results, (index, result) => { // <-- ES2016 notation
$.each(result.address_components, (jndex, address) => {
if (typeof address.types.sublocality != "undefined"){ // check if value is in an array
var city = address.long_name;
}
});
});
function get_address(json_data, types, short_name) {
// types - the types value that you want to fetch.
// Eg: "administrative_area_level_2", "country"
// short_name - boolean indicating whether we need short name or long name
// true - short name fetched. false - long name fetched
short_name = typeof short_name == 'undefined' ? false : short_name //false by default
results = [];
for (var i=0; i<json_data.results.length; i++) {
var ad_comp = json_data.results[i].address_components;
for (var j=0; j<ad_comp.length; j++) {
// Check whether ad_comp exists
if (ad_comp[j].types.indexOf(types) !== -1) {
results.push(short_name ? ad_comp[j].short_name : ad_comp[j].long_name);
}
}
}
// Return single match or multiple matches.
if (results.length == 1) {
return results[0];
} else {
return results;
}
}
// Call function to get data.
var postal_code = get_address(jsondata, "postal_code");
correct in above get_address answer:
function get_address(json_data, types, short_name) {
// types - the types value that you want to fetch.
// Eg: "administrative_area_level_2", "country"
// short_name - boolean indicating whether we need short name or long name
// true - short name fetched. false - long name fetched
short_name = typeof short_name == 'undefined' ? false : short_name //false by default
tmpResults = [];
$.each(json_data, (index, result) => { // <-- ES2016 notation
$.each(result.address_components, (jndex, address) => {
if (address.types.indexOf(types) != -1){ // check if value is in an array
tmpResults(short_name ? address.short_name : address.long_name);
}
});
});
// Return single match or multiple matches.
if (tmpResults.length == 1) {
return tmpResults[0];
} else {
return tmpResults;
}
}