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

Попробуйте с помощью JSON парсер как jsoup –

+0

Вы проверили 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

Привет, я попробовал ваше решение, но «req.getJSONArray (« adresses »)» выделяется eclpise со следующим сообщением: «изменить тип« addressJson »на« Object ». – Grichka

+0

Простите, прошло некоторое время с тех пор, как я использовал библиотека 'org.json', поэтому я немного ржавчина;) Я отредактировал ответ. Посмотрите, работает ли это для вас. – Ownaginatious

Смежные вопросы