2016-07-27 25 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