Analisar uma string com delimitadores e carregá-la em um mapa?
Eu tenho abaixo String, que está no formato dekey1=value1, key2=value2
que eu preciso carregá-lo em um mapa(Map<String, String>)
Comokey=value
então eu preciso dividir por vírgula,
e depois carregarcossn
como chave e0
seu valor.
String payload = "cossn=0, abc=hello/=world, Agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36";
HashMap<String, String> holder = new HashMap();
String[] keyVals = payload.split(", ");
for(String keyVal:keyVals) {
String[] parts = keyVal.split("=",2);
holder.put(parts[0], parts[1]);
}
estou obtendojava.lang.ArrayIndexOutOfBoundsException
nesta linhaholder.put(parts[0], parts[1]);
e está acontecendo bcoz dessa StringAgent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
pois tem uma vírgula extra no valorKHTML, like Gecko
.
Como posso consertar isso? Em geral, abaixo devem ser minhas chaves e valor após carregá-lo em um mapa.
Key Value
cossn 0
abc hello/=world
Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36