1
resposta

Pegar um parâmetro do JSON

Na aula consegui pegar o JSON por completo, com o seguinte código

String conteudo = Request
    .Post("http://localhost:8080/gerenciador/empresas")
    .execute()
    .returnContent()
    .asString();

Agora estou curioso em saber em como pegar um conteúdo especifico no JSON, eu vou precisar fazer a leitura desta string e ir separando os conteúdos na unha? Dei uma olhada na documentação da biblioteca, mas confesso não achei nada a respeito.

Imagine o seguinte JSON recebido, por exemplo:

{
    "request": {
        "type": "City",
        "query": "New York, United States of America",
        "language": "en",
        "unit": "m"
    },
    "location": {
        "name": "New York",
        "country": "United States of America",
        "region": "New York",
        "lat": "40.714",
        "lon": "-74.006",
        "timezone_id": "America/New_York",
        "localtime": "2019-09-07 08:14",
        "localtime_epoch": 1567844040,
        "utc_offset": "-4.0"
    },
    "current": {
        "observation_time": "12:14 PM",
        "temperature": 13,
        "weather_code": 113,
        "weather_icons": [
            "https://assets.weatherstack.com/images/wsymbols01_png_64/wsymbol_0001_sunny.png"
        ],
        "weather_descriptions": [
            "Sunny"
        ],
        "wind_speed": 0,
        "wind_degree": 349,
        "wind_dir": "N",
        "pressure": 1010,
        "precip": 0,
        "humidity": 90,
        "cloudcover": 0,
        "feelslike": 13,
        "uv_index": 4,
        "visibility": 16
    }
}

Como eu faria para pegar, por exemplo, o "name"?

1 resposta

Oie Israel, tudo bem contigo?

Infelizmente acredito que nesse caso terá que ser feito na mão, pedaço por pedaço.

Fiz um exemplo usando o json da aula, segue abaixo:

Json:

[
        {
                "id": 1,
                "nome": "Alura",
                "dataDeAbertura": "Sep 22, 2021, 11:21:38 PM"
        },
        {
                "id": 2,
                "nome": "Caelum",
                "dataDeAbertura": "Sep 22, 2021, 11:21:38 PM"
        }
]

Código:

        try {
            String conteudo = Request
                    .Post("http://localhost:8080/gerenciadorr/empresasapi")
                    .execute()
                    .returnContent()
                    .asString();

            String[] lista = new String[conteudo.length()];

            for(int i = 0; i < conteudo.length(); i++) {
                lista = conteudo.split(",");
            }

            for(int i = 0; i < lista.length; i++) {
                if(lista[i].contains("nome")) {
                    System.out.println(lista[i]);
                }    
            }            

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

O resultado desse código é:

"nome":"Alura"
"nome":"Caelum"

Espero que isso te ajude!

Se tiver qualquer outra dúvida fico a disposição :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software