Ich versuche es zu machen, damit ich überprüfen kann, ob eine Zeichenfolge in einem JSON ist. Die Art, wie ich es mache, besteht darin, die Werte von json in ein Array zu schreiben und dann zu sehen, ob es den Wert enthält. Das Problem ist, dass es eins nach dem anderen überprüft. Dies bewirkt, dass der Benutzer die Schicht nicht bearbeitet, wenn dies der Fall ist. Dann sagt es auf der nächsten Schleife, dass sie arbeiten.Überprüfen Sie, ob JSON Zeichenfolge Wert enthält
private void CheckIfAlreadyWorking(String result) throws JSONException {
//removed code to condense
//result is a json of the days that the user is already working
if (datematcher.find()) {
String date = datematcher.group(1); //Date of the shift the user is already working
JSONArray jsonArray = new JSONArray(result);
String[] yourshifts = new String[jsonArray.length()];
boolean end = false;
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
yourshifts[i] = obj.getString("date");
if (yourshifts[i].contains(date)) {
//Already working that day
Toast.makeText(getApplicationContext(), "Error: You are already working this day", Toast.LENGTH_SHORT).show();
} else if(end == false){
AddShift();
end = true;
}
}
}
else {
//Error
}
}
Können Sie erklären, was das genaue Problem ist. Der Code sieht gut für mich aus. Was ist das Problem, mit dem Sie hier konfrontiert sind? –
Der Benutzer wählt eine Schicht aus, dann wird dieser Code verwendet, um zu prüfen, ob die Schicht ausgewählt wurde, wenn sie bereits an diesem Datum arbeiten. Es wird jedoch durch das Array gehen und jeweils ein Element prüfen. Wenn das Datum nicht als erstes angezeigt wird, wird das Add-Shift(); In der Tat arbeiten sie bereits an diesem Datum, also AddShift(); sollte nicht aufgerufen werden, es ist nur später im Array. – James