Bom terá de iterar dentro do indice.endereco
.
<li class="lista-dados-item" v-for="indice in dados">
<p>{{ indice.id }}</p>
<p>{{ indice.nome }}</p>
<h2>Endereço</h2>
<p class="lista-dados-item" v-for="dado_do_end in indice.endereco">
{{ Object.keys(dado_do_end)[0] }}: {{ dado_do_end[Object.keys(dado_do_end)[0]] }}
</p>
</li>
O maior problema mesmo é como os dados estao organizados. Como o endereco dentro de cada dado é uma lista e sendo um objeto diferente em cada item (ja que em um objeto temos { rua: 'rua qualquer'} e no outro temos { bairro: 'bairro qualquer' }), nao é possível iterar no endereco de forma uniforme.
Na gambiarra acima o Objects.keys() retorna uma lista com os atributos do objeto. Entao na primeira vez vai retorna "rua", na segunda "numero" e assim por diante. E assim conseguimos acessar os dados do endereco.
Uma segunda solução seria iterar mais um nivel abaixo:
<li class="lista-dados-item" v-for="indice in dados">
<p>{{ indice.id }}</p>
<p>{{ indice.nome }}</p>
<h2>Endereço</h2>
<p class="lista-dados-item" v-for="dado_do_end in indice.endereco">
<span v-for="(valor, chave) in dado_do_end">
{{ chave }}: {{ valor }}
</span>
</p>
</li>
Sugiro uma mudança na estrutura deste dado da seguinte forma:
id : "c_242545",
nome : "Teste de produto 1",
endereco: {
rua: "Rua x21",
numero: 35,
bairro: "Nova Conceição",
cidade: "São Paulo"
}
e no template:
<li class="lista-dados-item" v-for="indice in dados">
<p>{{ indice.id }}</p>
<p>{{ indice.nome }}</p>
<h2>Endereço</h2>
<p class="lista-dados-item" v-for="(dado_do_end, key) in indice.endereco">
{{ key }}: {{ dado_do_end }}
</p>
</li>