Ok, esto me está volviendo loco. No soy muy inteligente con Java / Groovy pero por favor que me señale la dirección correcta!
Tengo una llamada GET con texto de respuesta como "[" a " "b", "c"]"
Finalmente llegué a arrayList a recorrer para comparar cadenas. Probé .equals (), .equalsIgnoreCase (), compareTo (), Objects.equals (), etc que no coincide. Me sale "String no es lo mismo". ¿Qué me estoy perdiendo?
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");
}
}
Eso sucede porque la cadena intenta partido tiene cotizaciones .. por lo que está haciendo a == "a" que no es lo mismo .. si no desea utilizar el depurador para validar lo que dije tratan de comparar sus longitudes (o imprimirlos). la respuesta se aplica a esta cadena = sb "[" a " 'b', 'c']", que fue alimentado a la InputStreamReader la misma manera que lo proporcionó.
BufferedReader rd = new BufferedReader(new InputStreamReader(new ByteArrayInputStream("[\"a\",\"b\",\"c\"]".getBytes())));