Em vez de usar: .sorted(Comparator.comparing(Dados::codigo))
utilizar: .sorted(Comparator.comparing(marca -> Integer.parseInt(marca.codigo())))
Os dados chegam como Strings e ao serem ordenados com sorted ficam desorganizados. A proposta é converter o valor do código, que apesar de ser um número, é inicialmente uma String, para Integer. Isso permite ordená-los de forma sequencial.
Trecho do código:
var marcas = conversor.obterLista(json, Dados.class);
marcas.stream()
//.sorted(Comparator.comparing(Dados::codigo))
.sorted(Comparator.comparing(marca -> Integer.parseInt(marca.codigo())))
.forEach(System.out::println);