Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查json是否包含字符串值_Java_Android_Json - Fatal编程技术网

Java 检查json是否包含字符串值

Java 检查json是否包含字符串值,java,android,json,Java,Android,Json,我正在尝试这样做,以便检查字符串是否在json中。我的做法是将json的值放入一个数组中,然后查看它是否包含该值。问题是它会一个接一个地检查。这会导致它说,当用户轮班时,他们没有轮班。然后在下一个循环中,它说他们正在工作 private void CheckIfAlreadyWorking(String result) throws JSONException { //removed code to condense //result is a json of the days

我正在尝试这样做,以便检查字符串是否在json中。我的做法是将json的值放入一个数组中,然后查看它是否包含该值。问题是它会一个接一个地检查。这会导致它说,当用户轮班时,他们没有轮班。然后在下一个循环中,它说他们正在工作

 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
    }
}
private void CheckIfAlreadyWorking(字符串结果)抛出JSONException{
//删除要压缩的代码
//结果是用户已经工作的日期的json
if(datematcher.find()){
String date=datematcher.group(1);//用户已经在工作的班次的日期
JSONArray JSONArray=新JSONArray(结果);
String[]yourshifts=新字符串[jsonArray.length()];
布尔结束=假;
for(int i=0;i
您可以简单地使用中断语句,在您正在做的祝酒词之后

因此,如果他们正在处理这个问题,在完成toast之后,break语句将为您结束循环,并且不会遍历jsonArray中的其余对象

像这样:

if (yourshifts[i].contains(date)) {
    //Already working that day
    Toast.makeText(getApplicationContext(), "Error: You are already working this day", Toast.LENGTH_SHORT).show();
    break;
}

您可以简单地使用中断语句,在您正在做的祝酒词之后

因此,如果他们正在处理这个问题,在完成toast之后,break语句将为您结束循环,并且不会遍历jsonArray中的其余对象

像这样:

if (yourshifts[i].contains(date)) {
    //Already working that day
    Toast.makeText(getApplicationContext(), "Error: You are already working this day", Toast.LENGTH_SHORT).show();
    break;
}
试着这样做: 取一个
布尔值isfound=false

for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject obj = jsonArray.getJSONObject(i);
                yourshifts[i] = obj.getString("date");
            if (yourshifts[i].contains(date)) {
                isfound = true;
                break;

            }
        }
试着这样做: 取一个
布尔值isfound=false

for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject obj = jsonArray.getJSONObject(i);
                yourshifts[i] = obj.getString("date");
            if (yourshifts[i].contains(date)) {
                isfound = true;
                break;

            }
        }

你能解释一下到底是什么问题吗。代码在我看来很好。你在这里面临的问题是什么?你能解释一下确切的问题是什么吗。代码在我看来很好。你在这里面临的问题是什么?