Manipular String

2 respostas
jeovane.reges

Olá a todos, boa noite.
Pessoal, tenho uma função em Ajax que envia para um Servlet uma String no mesmo modelo da saída abaixo.

{"Disease":["name","class"],"Ingredient":["name"]}

O que eu gostaria de saber é se é possível pegar essa saída e manipula-la de tal maneira que eu possa transformar os valores fora dos colchetes [ ] em Key [color=red](como Disease, por exemplo)[/color] e os valores dentro dos colchetes [ ] [color=red](como [“name”,“class”], por exemplo)[/color] em Values do meu Map<K,V>.
Onde cada “Key” teria apenas os seus respectivos Values. A minha ideia é construir um Map<K,V> da seguinte maneira abaixo.

Map<String, Set<String>> mapAjax = new LinkedHashMap<String, Set<String>>();

Para a saída que citei como exemplo, eu gostaria ter o seguinte resultado final.

Map<Disease, ["name","class"]>; Map<Ingredient, ["name"]>;
Alguém poderia me dar uma dica de como manipular essa String que tenho como saída?
Obrigado.

2 Respostas

tveronezi

Oi…
veja http://wiki.fasterxml.com/JacksonInFiveMinutes
ou https://sites.google.com/site/gson/gson-user-guide

jeovane.reges
Olá tveronezi, obrigado pelos links irei dar uma olhada neles. Só pra constar, o resultado da String que postei é um resultado em Json que recebo da função Ajax abaixo.
var key,
value,
mapList;
$(".conteudoMenu a").click(function(){
    key = $(this).parent(".conteudoMenu").parent("li").find(".itemMenu").attr("id");
    value = $(this).attr("id"); 
    // O que recebo no qual citei como exemplo, vem dessa variável mapList 
    mapList = JSON.stringify(generatingFunctionArray());
});

var mapaDeListas = {};
var values = [];
function generatingFunctionArray() {
    if (mapaDeListas[key] && $.inArray(value, mapaDeListas[key]) == -1 || mapaDeListas[key] && $.inArray(value, mapaDeListas[key]) != -1) {
        // Verifica se  existe a chave vinda do "key" e se o valor de "value" está presente no array
        if (mapaDeListas[key].indexOf(value) == -1){
            values.push(value);
            mapaDeListas[key] = values;
        }
    }
    else {
        // Cria o array de acordo com o valor da "key" e adiciona o valor de "value"
        mapaDeListas[key] = {};
        values = [];
        values.push(value);
        mapaDeListas[key] = values;
    }
    return mapaDeListas;
}
Criado 12 de fevereiro de 2013
Ultima resposta 12 de fev. de 2013
Respostas 2
Participantes 2