/ / Como extrair json de uma cadeia json usando GSON? - java, json, parsing, gson

Como extrair json de uma string json usando GSON? - java, json, parsing, gson

Abaixo está minha string JSON. Estou tentando extrair hosts a partir dele.

{"description":"DescA","process_running":"sf","hosts":{"dc1":["machineA","machineB"]}}

Como hosts é uma String JSON em si e gostaria de extrair essa String JSON dela. Eu estou usando GSON aqui -

String ss = new String(bytes, Charset.forName("utf-8"));

// here ss is the above JSON String

Map<String, Object> data = gson.fromJson(ss, Map.class); // parse

Eu estava tentando usar Map para desserializar, mas o resultado está vindo assim no data-

{description=DescA, process_running=sf, hosts={dc1=[machineA, machineB]}}

Existe alguma maneira, eu posso extrair hosts no formato JSON?

Respostas:

1 para resposta № 1

A maneira mais fácil que eu posso pensar em fazer isso seria usar o gson para criar uma árvore de elementos json do seu mapa, e pedir para ele dar apenas o nó do host:

    Map<String, Object> data = gson.fromJson(ss, Map.class); // parse

JsonObject jsonTree = (JsonObject) gson.toJsonTree(data);
String hostsJson = jsonTree.get("hosts").toString();