Como mapear um json para enviar uma requisição post

4 respostas
restjavaspring-boot
J

Eu tenho o json abaixo:

{
"script": {
    "source": "ctx._source.PARAM = VALUE"
},
"query": {
    "query_string": {
        "fields": ["kpi","weekday","hour"],
        "query": "(kpi:'KPI') AND (weekday:'WEEKDAY') AND (hour:'HOUR')"
    }
}

}

Eu preciso representar essa estrutura para enviá-la numa requisição POST.

Pensei na estrutura abaixo:

Map<String, Map<String, String>> map = new HashMap<String, Map<String, String>>();
map.put("script", new HashMap<String, String>());
map.get("script").put("source", "ctx._source.PARAM = " + valor);
    
Map<String, Map<String, Map<String, String>>> map2 = new HashMap<String, Map<String, Map<String, String>>>();
map2.put("query", new HashMap<String, Map<String, String>>());
map2.get("query").put("query_string", new HashMap<String, String>());
map2.get("query").get("query_string").put("fields", "[\"kpi\",\"weekday\",\"hour\"]");
map2.get("query").get("query_string").put("query", "(kpi:'" + kpi +"') AND (weekday:'" + weekday +"') AND (hour:'" + hour +"')");

O problema é que desta forma a estrutura está separada em duas variáveis e eu preciso estruturar esse json em apenas uma variável.

4 Respostas

J

Cria uma estrutura de dados / DTO que represente essa mesma estrutura que está no formato json, sem esses Maps confusos.

J

Como eu faço isso? Poderia me ajudar?

J

Está com dúvida sobre como criar classes em Java? Pois é só criar classes de acordo com a estrutura de dados que necessitar. O Spring serializa/desserializa um objeto java pra json (e vice-versa) automaticamente.

Abaixo um site pra ajudar a gerar classes a partir de um json:

https://json2csharp.com/json-to-pojo

Depois é só ajustar o que quiser e renomear pros nomes ficarem mais significativos.

M

Usa alguma biblioteca de conversão, como:

Moshi
GSON

Criado 9 de novembro de 2020
Ultima resposta 11 de nov. de 2020
Respostas 4
Participantes 3