2016-11-22 6 views
1

У меня есть следующий запрос couchbase в Java, чтобы получить список массивов определенного значения.Запросить часть строки из ArrayList

Statement statement = select("PlanningId").from(i(CouchbaseBucket.RangePlan.toString())) 
         .where(x("meta().id").like(s("PRODUCTOPTION%")).and(x("Status").eq(s("Ready")))); 

    String[] planningIDs = couchbaseRepository.getQueryResult(bucket, statement); 

Это возвращает результат, как:

[{"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"}] 

мне нужно вывод только значения:

[{"PRODUCTPLANNING_666"}, {"PRODUCTPLANNING_777"}] 

Я не в состоянии получить это, используя подстроку или раскол. Как бы я мог достичь этого?

Благодаря Emraan

+0

Если вы просто хотите, чтобы получить полученный массив строк 'planningIds', вам нужно создать еще один массив String, в котором вы можете фактически сохранить требуемые значения, такие как' PRODUCTPLANNING_666, PRODUCTPLANNING_777, ... ' –

+0

Не могли бы вы сообщить мне если мне нужно создать новый список массивов. И если тогда, как я получу только часть этого для вставки? – Emraan

+0

Прошу прояснить мне одно: получаете ли вы '[{" PlanningId ":" PRODUCTPLANNING_666 "}, {" PlanningId ":" PRODUCTPLANNING_777 "}]' в массиве 'String' или' ArrayList'. Глядя на ваш фрагмент кода, я предполагаю, что вы вызываете 'Arrays.toString (planningIds)'. Это правильно? –

ответ

1

Как упоминалось в комментариях, на каждом запросе, если возвращенный результат содержит один String как: {"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"},...., процесс извлечения только необходимая часть {"PRODUCTPLANNING_XXX"},... может быть сделано следующим образом:

Скажем, у вас есть строка, как

String planningIds = {"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"},....{"PlanningId":"PRODUCTPLANNING_NNN"}

, и если вы хотите, чтобы захватить е ACH {"PRODUCTPLANNING_XXX} в одном String,

StringBuilder finalResult = new StringBuilder(); 
     String[] results = allPlanningIds.split(","); 
     for(String eachPlanningId : results){ 
      String[] resultPlanningIds = eachPlanningId.split(":"); 
      if(resultPlanningIds.length != 2){ 
       continue; 
      } 
      String result = "{" + resultPlanningIds[1]; 
      finalResult = finalResult.append(result + ","); 
     } 
     System.out.println(finalResult); 

или если вы хотите, чтобы захватить каждый {"PRODUCTPLANNING_XXX}, как раздельные String объекты в пределах ArrayList, в приведенном выше фрагменте кода, измените StringBuilder finalResult = new StringBuilder(); на List<String> finalResults = new ArrayList<>(); и

finalResult = finalResult.append(result + ","); в finalResults.add(result).

Надеюсь, это то, что вы искали.

Примечание: Проверьте конечные/нулевые условия массива String[] results.

+0

Привет, Я пробовал с отдельными объектами String, и я получаю out как '[{" PRODUCTPLANNING_666 "}, {" PRODUCTTPLANNING_777 "}]]'. Я получаю дополнительный ']'. Не знаете почему? – Emraan

+0

Это потому, что исходный 'String' содержит'] 'в конце и будет частью последнего элемента массива' String [] results'. Если вы хотите пропустить, что вы можете выполнить операцию 'subString()' в конечном результате. –