我正从远程调用中检索OSM Json,以获取我必须保存在数据库中的功能列表。由于数据彼此非常不同(例如,它们中的一些确实有一个名为“addr:city”的标签,而其中一些没有),我想检查一个密钥是否存在,并且仅在这种情况下保存相应的值。我发现只有this问题,但这不是我的情况,因为我不知道一个元素将具有哪些键,哪些不具有哪些键,因为我正在处理大量数据,我真的可以不要逐个检查元素,当然我不能为每个案例写一个IF 有办法解决这个问题吗?我正在考虑“如果键具有空值,忽略它”,同时循环遍历元素,但我不知道是否存在类似的东西
编辑:
这是我的疑问:
https://overpass-api.de/api/interpreter?data=[out:json][timeout:25];(node[~%22^(tourism|historic)$%22~%22.%22](44.12419,%2012.21259,%2044.15727,%2012.27696);way[~%22^(tourism|historic)$%22~%22.%22](44.12419,%2012.21259,%2044.15727,%2012.27696););out%20center;
这是我用来在firebase上保存数据的代码:
results.elements.forEach(e=>{
var ref = firebase.database().ref('/point_of_interest/');
var key = firebase.database().ref().child('point_of_interest').push().key;
var updates = {};
var data = {
città: e.tags["addr:city"],
tipologia: e.tags["amenity"],
indirizzo: e.tags["addr:street"],
nome: e.tags["name"],
lat: e.lat,
lon: e.lon
}
updates['/point_of_interest/'+key] = data;
firebase.database().ref().update(updates);
})
“results”是json格式的响应
答案 0 :(得分:2)
你可以使用类似的东西:
var attrs = ["addr:city", "amenity", "addr:street", "name"];
var labels = ["città", "tipologia", "indirizzo", "nome"]
var data = { };
attrs.forEach((a, i) => {
if (e.tags[a]) { data[labels[i]] = e.tags[a]; }
});
如果你可以从某个地方查询属性名称和标签,你甚至可以使它更具动态性。