2017-01-21 12 views
1

Я новичок в JSON и GSON, а также Java. В настоящее время у меня возникают трудности с удалением элементов в файлах Json. Ниже мой кодКак удалить элементы из файлов JSON?

public void removeUser() throws IOException{ 
    File accounts = new File("accounts.json"); 
    delete(accounts); 
} 

void delete(File acc) throws IOException { 
    if (acc.exists()) { 
     List userlist = new ArrayList(); 
     Iterator<Users> iterator = userlist.iterator(); 
     while (iterator.hasNext()) { 
      if (iterator.next().getUsername().equals(deleteTxt.getText())) { 
       iterator.remove(); 
       notifications(); 
       deleteTxt.setText(null); 
       notificationLbl.setText("Wish granted!"); 

       break; 

      } 
     } 
    } 
} 

и структура моего JSon в файл

{ "Имя пользователя": "администратор", "пароль": "21232f297a57a5a743894a0e4a801fc3", "роли": "админы" }, { "имя пользователя": "клиент", "пароль": "21232f297a57a5a743894a0e4a801fc3", "роли": "клиент" }

Вещь Я хотел, чтобы это произошло: Когда я нажал deleteBtn, будет удален removeUser(), и пользователи и детали будут удалены.

Thing, что это произойдет: Ничего не случится

Может кто-нибудь наставит меня о том, как сделать удалить?

+0

вы даже не извлечение данных из файла. вы должны прочитать данные в файле. преобразуйте его в объект JSON. итерацию. Удалить. затем сохраните его обратно –

+0

ну, действительно новый в Java и JSON. Я попробую, если я смогу оставить мне какой-то фрагмент кода для меня, это очень поможет. знак равно – newemployee

ответ

0

пример кода для чтения jsonarray из файла, изменения в новый массив и хранить его обратно с помощью Apache-Викисклада io.jar

import java.io.File; 
import java.io.IOException; 
import java.nio.charset.Charset; 

import org.apache.commons.io.FileUtils; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public static void delete(String username) throws JSONException, IOException { 
     File file = new File("E:\\accounts.json"); 
     String encoding = Charset.defaultCharset().toString(); 
     JSONArray oldDataArray = new JSONArray(FileUtils.readFileToString(file, encoding)); 
     System.out.println(oldDataArray); 
     JSONArray newDataArray = new JSONArray(); 
     for(int n=0;n<oldDataArray.length();n++) { 
      JSONObject nthObject = oldDataArray.getJSONObject(n); 
      if(!username.equals(oldDataArray.getJSONObject(n).get("username"))) { 
       newDataArray.put(nthObject); 
      } 
     } 
     System.out.println(newDataArray); 
     FileUtils.writeStringToFile(file, newDataArray.toString(), encoding); 
    }