Get values from a json / object

1

I have the following json:

And2selects,oneforstateandoneforcity,Ialreadyfilledthestatecorrectlyusingthisjson:

//comboboxestados$.getJSON('http://api.doupenglish.com.br/unidades',function(unidades){varselectestado=$("#selectestado");
        var selectcidade = $("#selectcidade");

        var estados = unidades.Estados;
        //não consigo recuperar as cidades do json aqui
        var cidades = unidades.Estados.values;

        // console.log(cidades)
        var optionsestados = '<option hidden >Selecione um estado</option>';
        $.each(estados, function (estado) {
            optionsestados += '<option value="' + estado + '">' + estado + '</option>';
        });
        selectestado.html(optionsestados);
        selectestado.change(function () {
            var estadoselecionado;
            selectestado.find("option:selected").each(function () {
                estadoselecionado = $(this).text();
                console.log(estadoselecionado)
            });

        })

    });

I need to select all the cities in that state when I select a state, the problem is that I can not get the "list" of cities in this json, I tried several things but without success. I do not know if it is json that is badly "formatted" but since I do not have a key for cities, I can not access it.

EDIT I was able to get an object with the cities:

 $.each(estados, function (estado, cidades) {
                    if (estado === estadoselecionado){
                        console.log(cidades)
                    }
                });

But I still can not get the values of this object as name, street, etc.

    
asked by anonymous 09.03.2018 / 00:58

1 answer

2

To get the values of street, number, email, etc., you have to for each inside the other, for example:

selectestado.change(function() {
    let estadoselecionado = $(this).val();

    $.map(estados[estadoselecionado], function (cidades) {
        $.map(cidades, function (enderecos) {
            console.log( 'Rua: ${enderecos.rua}, ${enderecos.numero}' )
        });
    });
})

But if you just want to get the name of the cities, just use:

selectestado.change(function() {
    let estadoselecionado = $(this).val();

    $.map(estados[estadoselecionado], function (cidades, cidade) {
        console.log( cidade )
    });
})
    
09.03.2018 / 09:31