Recuperar retorno JSON recursivamente

1 resposta
java
rockstorm

Olá.

Estou recebendo um retorno JSON onde preciso recuperar somente valores finais. Exemplo

{
   "destination_addresses" : [ "Parque das Nações, Santo André - SP, 00000-135, Brazil" ],
   "origin_addresses" : [ "Jardim Valdibia, São Bernardo do Campo - SP, 0000-135, Brazil" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "17,7 km",
                  "value" : 17680
               },
               "duration" : {
                  "text" : "25 mins",
                  "value" : 1506
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

Preciso somente recuperar os valores de distance, duration e status

Alguma sugestão

1 Resposta

Murilo.MPO
var respostaJSON = {
            "destination_addresses": ["Parque das Nações, Santo André - SP, 00000-135, Brazil"],
            "origin_addresses": ["Jardim Valdibia, São Bernardo do Campo - SP, 0000-135, Brazil"],
            "rows": [
                {
                    "elements": [
                        {
                            "distance": {
                                "text": "17,7 km",
                                "value": 17680
                            },
                            "duration": {
                                "text": "25 mins",
                                "value": 1506
                            },
                            "status": "OK"
                        }
                    ]
                }
            ],
            "status": "OK"
        };
        console.log("Pegando o valor em uma posição pré definida.");
        var elemento = respostaJSON.rows[0].elements[0];
        var status = elemento.status;
        var distanceText = elemento.distance.text;
        var distanceValue = elemento.distance.value;
        var durationText = elemento.duration.text;
        var durationValue = elemento.duration.value;
        console.log("status: " + status);
        console.log("distanceText: " + distanceText);
        console.log("distanceValue: " + distanceValue);
        console.log("durationText: " + durationText);
        console.log("durationValue: " + durationValue);
        
        console.log("Percorrendo um for, caso haja vários elementos dentro do array do 'rows' ou do 'elements'.");
        
        var rows = respostaJSON.rows;
        for(var idxRow = 0, qtdRows = rows.length; idxRow < qtdRows; idxRow++) {
            var row = rows[idxRow];
            
            var elements = row.elements;
            for(var idxElement = 0, qtdElements = elements.length; idxElement < qtdElements; idxElement++) {
                var element = elements[idxElement];
                
                var distance = element.distance;
                var duration = element.duration;
                
                var txtBase = "row: " + idxRow + " com o element: " + idxElement + "; ";
                console.log(txtBase + "status: " + element.status);
                console.log(txtBase + "'text' of 'distance': " + distance.text);
                console.log(txtBase + "'value' of 'distance': " + distance.value);
                console.log(txtBase + "'text' of 'duration': " + duration.text);
                console.log(txtBase + "'value' of 'duration': " + duration.value);                    
            }                
        }
        // Espero que isso ajude.
Criado 14 de março de 2016
Ultima resposta 14 de mar. de 2016
Respostas 1
Participantes 2