2017-01-21 19 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()が実行され、ユーザーと詳細が削除されます。起こるのです

シング: 何も

を起こりません誰でも削除を行う方法で私を導くことはできますか?

+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); 
    } 
関連する問題