javascript - 仅当密钥存在时,JSON文件才使用值

时间:2017-11-24 10:55:13

标签: javascript json

我正从远程调用中检索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格式的响应

1 个答案:

答案 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]; }
    });

如果你可以从某个地方查询属性名称和标签,你甚至可以使它更具动态性。