Ok, isso está me deixando louco. Eu não sou muito experiente com Java / Groovy, mas por favor me aponte para a direção certa!
Eu tenho uma chamada GET com texto de resposta como "[" a " "b", "c"]"
Eu finalmente consegui-lo para ArrayList para percorrer para comparar strings. Tentei .equals (), .equalsIgnoreCase (), compareTo (), Objects.equals () etc. Ele não corresponde. Eu recebo "String não é o mesmo". o que estou perdendo?
def sb= new StringBuffer();
def rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
def line;
while((line=rd.readLine()) !=null) {
sb.append(line);
}
//sb = "["a","b","c"]"
List<String> tempList = new ArrayList<String>(Arrays.asList(sb.replaceAll("\\[|\\]","").split(",")));
int count = 0;
String strToFind= "a";
for (String iT : tempList){
if (strToFind.equals(iT)){
log.debug("\nString the same\n");
} else {
log.debug("\nString not the same\n");
}
}
Isso acontece porque a cadeia tentar jogo tem citações .. então você está fazendo a == "a" que não é o mesmo .. se você não quiser usar seu depurador para validar o que eu disse tentar comparar seus comprimentos (ou imprimi-los). a resposta se aplica para esta corda sb = "[" a " 'b', 'c']", que foi alimentado ao InputStreamReader da mesma forma que o forneceu.
BufferedReader rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream("[\"a\",\"b\",\"c\"]".getBytes())));