Как сделать условие для данных из json

Я хочу создать условие, когда я вызываю json и делаю его так, чтобы «у вас не могло быть того же самого» в значении json, когда вы хотите добавить больше данных в базу данных.

это мой код

String nim2, ruang2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_kelas);
    nim = (EditText) findViewById(R.id.editNim);
    ruang = (EditText) findViewById(R.id.ruangPinjam);

    new daftarMahasiswa().execute();
}

public void nextButton (View view) {
    nim2 = nim.getText().toString();
    ruang2 = ruang.getText().toString();
    if (ruang2.equals(ruangan)) {
        Toast.makeText(KelasActivity.this, "this room has already borrow",Toast.LENGTH_LONG).show();
        ruang.setError("you cannot borrow the room again");
    }else if (nim2.equals(nimMahasiswa)){
        Toast.makeText(KelasActivity.this, "this NIM has borrow the room",Toast.LENGTH_LONG).show();
        nim.setError("you cannot borrow it again");
    }

class daftarMahasiswa extends AsyncTask<String, String, String> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(KelasActivity.this);
        pDialog.setMessage("Loading...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String... params) {
        String link_url = "http://192.168.43.54/datapeminjamankelas/read_mahasiswa.php";
        JSONParser jParser = new JSONParser();
        JSONObject json = null;
        try {
            json = jParser.AmbilJson(link_url);
        } catch (JSONException e) {
            e.printStackTrace();
        }

        try {
            str_json = json.getJSONArray("data");
            for (int i = 0; i < str_json.length(); i++) {
                JSONObject ar = str_json.getJSONObject(i);
                ruangan = ar.getString("ruang").trim();
                nimMahasiswa = ar.getString("nim").trim();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        pDialog.dismiss();
    }    
}

а это мой json

 {
  "data": [
    {
      "nim": "103452",
      "ruang": "2702"
    },
    {
      "nim": "102341",
      "ruang": "2504"
    },
    {
      "nim": "103421",
      "ruang": "1101"
    }
  ]
}

то, что я хочу сделать, это «ним», а «руанг» из json не может быть добавлен снова с тем же значением. он работает честно, но только когда у данных просто 1, когда у них больше, он больше не работает. пожалуйста, помогите, что я могу сделать, чтобы все исправить

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете добавить значения «nim» и «ruang» в отдельный список, и оттуда вы можете проверить, присутствует ли уже введенное значение или нет.

List<String> nimList = new ArrayList<>();
List<String> ruangList = new ArrayList<>();
for (int i = 0; i < str_json.length(); i++) {
    JSONObject ar = str_json.getJSONObject(i);
    ruangan = ar.getString("ruang").trim();
    nimMahasiswa = ar.getString("nim").trim();
    nimList.add(nimMahasiswa);
    ruangList.add(ruangan);
}

Вы можете проверить, как показано ниже:

    nim2 = nim.getText().toString();
    ruang2 = ruang.getText().toString();
    if (ruangList.contains(ruang2)) {
           Toast.makeText(KelasActivity.this, "this room has already borrow",Toast.LENGTH_LONG).show();
           ruang.setError("you cannot borrow the room again");
    }else if (nimList.contains(nim2)){
           Toast.makeText(KelasActivity.this, "this NIM has borrow the room",Toast.LENGTH_LONG).show();
           nim.setError("you cannot borrow it again");
    }

Лучше у вас может быть класс pojo и переопределить метод equals, как показано ниже

public class MyData {
  private String myNim;
  private String myRuang;
  //setter & getters here
  @Override
  public boolean equals(Object obj) {
    if (obj instanceOf MyData)
    {
      MyData myData = (MyData) obj;
      return myData.getMyNim().equals(this.myNim)&&myData.getMyRuang().equals(this.myRuang);
    }
    return false;
  }
}

и теперь вы можете проверить, существует ли элемент, используя приведенный ниже код.

try {
  str_json = json.getJSONArray("data");
  List<MyData> myDataList = new ArrayList<MyData>();
  for (int i = 0; i < str_json.length(); i++) {
    JSONObject ar = str_json.getJSONObject(i);
    ruangan = ar.getString("ruang").trim();
    nimMahasiswa = ar.getString("nim").trim();
    MyData myData = new MyData();
    myData.setMyNim(nimMahasiswa);
    myData.setMyRuang(ruangan);
    if (myDataList.contains(myData))
      //use your logic here to show error 'you cannot have the same thing'
    else
      myDataList.add(myData);
  }
} catch (JSONException e) {
  e.printStackTrace();
}

теперь вы можете использовать myDataList, который имеет уникальные элементы.

Другие вопросы по теме