/ / Impor ordem dos resultados do JSON - scala

Aplicar a ordem dos resultados do JSON - scala

Eu tenho conjuntos de resultados muito grandes sendo importados dejson. Cada linha de dados no json retorna uma ordem de "coluna" muito específica, que eu gostaria de percorrer rapidamente. Eu preferiria evitar a sobrecarga de verificar / combinar chaves para processar cada parte dos dados. Infelizmente, scala.util.parsing.json coloca essas colunas em um objeto Map e, quando iterar pelo Mapa, a ordem na qual ele itera é aleatório e não espelha necessariamente a ordem das colunas no resultado JSON.Existe uma maneira de fazer com que o analisador imponha a ordem das colunas JSON? Pensou-se se havia uma maneira de informar ao analisador que usasse LinkedHashMap ou ListMap como ele está gerando os objetos.Isso seria possível, estendendo a classe ou adicionar outras características? Eu tenho opções alternativas?

Respostas:

1 para resposta № 1

Eu consideraria tentar algo como json4s.

Parece que o tipo JObject tem campos ordenados.

https://github.com/json4s/json4s

Caso contrário, eu perguntaria por que você precisa deles ordenou? Você sempre pode map.get por chave.


2 para resposta № 2

Eu o desencorajava a confiar na ordem dos pares chave / valor. Objetos JSON são definiram Como:

Um objeto é um conjunto não ordenado de pares nome / valor.

Confiar no pedido provavelmente irá introduzir erros difíceis e incompatibilidade do seu código. A correção comercial da velocidade é sempre um mau negócio.

Em vez disso, eu sugiro encontrar um analisador rápido e correto. Eu usei Jackson antes, o que é muito rápido, e pode ser bem usado com o Scala. Você anotar uma classe arbitrária sua e Jackson analisa JSON em instâncias da classe. Em seguida, você pode processar essas instâncias como objetos Java / Scala nativos, o que é muito rápido e robusto.