Manipular String

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.

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

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.

[code]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 já 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;
}[/code]