Эффективный способ поиска в объекте JSON в Java - PullRequest
0 голосов
/ 11 мая 2018

У меня есть список объектов JSON: [{"name":"abc","id":"123"},{"name":"xyz","id":"345"}..] и набор параметров, таких как {"abc","def","xyz"}. Я хочу проверить, содержит ли второй набор параметров значение, которое отсутствует в поле имени объекта JSON в первом массиве.

Алгоритм, которому я следовал:

Boolean flag = false;
   for{name : nameSet} {
     if(jsonObject.get("name")!=name{
       flag = true;
     }
   }

   if(flag){
     System.out.print("not matched");
   }

Есть ли эффективный способ сделать это? Пожалуйста, предложите?

1 Ответ

0 голосов
/ 11 мая 2018

Вы не проверяете каждый элемент с каждым элементом массива Json. Вам понадобится дополнительный цикл for для того же.

Редактировать : Добавлены данные Json для ключа data. См. String json.

   Boolean found = false, flag = false;
   String json = "{ \"data\": [{"name":"abc","id":"123"},{"name":"xyz","id":"345"}]}"
   JSONObject object = new JSONObject(json);
   JSONObject getData = object.getJSONArray("data");

   for{name : nameSet} {
     found = false;
     for(int i = 0; i < getData.size(); i++) {
        JSONObject jsonObject = getData.getJSONObject(i);
        if(jsonObject.get("name").equals(name)){
          found= true;
          break;
        }
     }
     if(!found){
         flag = true;
         break;
     }
   }

   if(flag){
     System.out.print("not matched");
   }
...