2016-07-27 34 views
0

我的JSON:如何删除该行以JSON在JAVA

{ 
    "adresses": [ 
     { 
      "region": "Auvergne-Rhône-Alpes", 
      "pertinence": 0.41, 
      "cp": "73200", 
      "coordonnee": [ 
       45.6681753, 
       6.3863336 
      ], 
      "rue": "Rue Pasteur", 
      "osm_id": "8063355", 
      "pays": "France", 
      "ville": "Albertville", 
      "quartier": "Le Parstet", 
      "nom": "", 
      "secteur": "Albertville", 
      "numero": "" 
     }, 
     { 
      "region": "Auvergne-Rhône-Alpes", 
      "pertinence": 0.41, 
      "cp": "73200", 
      "coordonnee": [ 
       45.6635769, 
       6.3830012 
      ], 
      "rue": "Rue Pasteur", 
      "osm_id": "69253010", 
      "pays": "France", 
      "ville": "Albertville", 
      "quartier": "", 
      "nom": "", 
      "secteur": "Albertville", 
      "numero": "" 
     }, 
     { 
      "region": "Auvergne-Rhône-Alpes", 
      "pertinence": 0.41, 
      "cp": "73400", 
      "coordonnee": [ 
       45.7469095, 
       6.4237485 
      ], 
      "rue": "Rue Pasteur", 
      "osm_id": "170250718", 
      "pays": "France", 
      "ville": "Ugine", 
      "quartier": "", 
      "nom": "", 
      "secteur": "Albertville", 
      "numero": "" 
     } 
    ] 
} 

我需要删除不会忽略的一个当“osm_id”是等于一个变量。

我已经开始将JSON放入一个ArrayList字符串中,以删除我想要的行然后重做JSON。 但是元素“coordonnee”是一个数组,我不知道我能做什么。

这里对我的审判:

JSONObject req = reponse.convertToJsonObject(); 
    JSONArray adresses = req.getJSONArray("adresses"); 
    ArrayList<String> tab = new ArrayList<String>(); 
    for (int i = 0; i < adresses.length(); i++) { 
    JSONObject adr = adresses.getJSONObject(i); 
    String line = adr.getString("region") + " " + adr.getDouble("pertinence") + " " 
    + adr.getString("cp") + " " + adr.getString("coordonnee") 
    + " " + adr.getString("rue") + " " + adr.getString("osm_id") + " " 
    + adr.getString("pays") + " " + adr.getString("ville") 
    + " " + adr.getString("quartier") + " " + adr.getString("nom") + " " 
    + adr.getString("secteur") + " " + adr.getString("numero"); 
    tab.add(line); 
} 

你能帮助我吗?

+0

尝试使用像jsoup –

+0

一个JSON解析器你检查http://stackoverflow.com/questions/15603033/removing-elements – Naveen

回答

0

我认为这应该做你想做的。它会过滤掉任何具有与您提供的变量相匹配的“osm_id”的地址。

JSONObject req = reponse.convertToJsonObject(); 
JSONArray filteredAddresses = new JSONArray(); 
String filterId = "..."; // put whatever your ID is here 

JSONArray unfilteredAddresses = req.getJSONArray("adresses"); 
for (int i = 0; i < unfilteredAddresses.length(); i++){ 
    JSONObject addressJson = unfilteredAddresses.getJSONObject(i); 
    if (!addressJson.has("osm_id") || !addressJson.getString("osm_id").equals(filterId)){ 
     filteredAddresses.put(addressJson); 
    } 
} 
req.put("adresses", filteredAddresses); 
+0

谢谢您的回答,我测试明天我会告诉你,如果它的工作原理! – Grichka

+0

嗨,我尝试了你的解决方案,但是“eqp”突出显示了“req.getJSONArray(”adresses“)”,其中包含以下消息:“将'addressJson'的类型更改为'Object' – Grichka

+0

对不起,我用了一段时间'org.json'库,所以我有点生疏;)我编辑了答案,看看它是否适用于你 – Ownaginatious