Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Raffael Dornelles Jardim

Percorrendo Json retornado pelo mongoDB

Recommended Posts

Boa tarde, Pessoal!

 

Estou começando agora no Ruby e gostaria de saber como faço para percorrer o JSON mostrado abaixo:

 

Exemplo Retorno de um mongoDB:

 

{
"check_name" : "check-s3-bucket",
"param_1" : [
{
"name" : "bucket-name",
"value" : "bourbon-backup-mysql"
},
{
"name" : "bucket-name",
"value" : "bourbon-backup-mysql-prod"
}
],
"type" : "standard",
"subscribers" : "aws",
"command" : "/etc/sensu/plugins/aws/s3/check-s3-bucket.rb",
"interval" : "7200",
"timeout" : "7200",
"handler" : "slack"
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raffael,

Primeiro de tudo é: Seu arquivo .rb (ruby) vai precisar dar um require no jSON... Portanto essa será uma função bem simples de inicio.

require 'rubygems'
require 'json'
   => true

Não me lembro se, nesse caso é necessário o => true. Veja no output desse seu novo arquivo se o require retorna falso. Se ele retornar o valor false, vá até o terminal (prompt/cmd) e digite:

gem install json

Agora vamos dar um parse no seu arquivo. O ruby precisa entender o que será lido, então vamos escrever da seguinte maneira:

arquivo = File.read('seu_arquivo_json.json')

arquivo é uma variável qualquer, você pode mudar o nome quando quiser. Agora que temos uma variável com o arquivo jSON, vamos dar um parse para que o ruby consiga interpreta-lo.

parse_arquivo = JSON.parse(arquivo)

Bem, até aqui temos duas variáveis: arquivo e parse_arquivo. Seu arquivo .rb até aqui deve estar da seguinte maneira:

require 'rubygems'
require 'json'
arquivo = File.read('seu_arquivo_json.json')
parse_arquivo = JSON.parse(arquivo)

Removi o => true, pois ele já não é mais necessário. Aquilo foi só para fazer uma verificação se já tinha instalado o gem JSON no seu PC.

 

Agora que ele deu parse no seu arquivo JSON, muito provavelmente o retorno deve ser semelhante a esse abaixo:

parse_arquivo['check_name']
   => "check-s3-bucket"
parse_arquivo['param_1']
   => { "name" => "bucket-name", "value" => "bourbon-backup-mysql" },
      { "name" => "bucket-name", "value" => "bourbon-backup-mysql-prod" }
parse_arquivo['type']
   => "standard"
parse_arquivo['subscribers']
   => "aws"
parse_arquivo['command']
   => "/etc/sensu/plugins/aws/s3/check-s3-bucket.rb"
parse_arquivo['interval']
   => "7200"
parse_arquivo['timeout']
   => "7200"
parse_arquivo['handler']
   => "slack"

Não sei se o output está correto, pois fiz a mão mesmo hahahahaha. Bem, faça o teste e retorne se resolvi sua dúvida.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Raffael,

Fiquei em dúvida quanto a sua questão, apesar de estar clara. Você quer deixar de usar um array associativo para usar um array com index?

  • SIM: Consegue, só precisaria entender como/porquê pretende fazer isso. Como não sei o seu nível de conhecimento quanto ao ruby, vou deixar alguns links que talvez te ajude nessa questão também.
    - A guide to ruby collections.
    - APIDock - Index(array).
    - Ruby Doc - Hash.
  • NÃO: Poderia especificar melhor a sua questão?

Obs.: Se sua questão foi resolvida, vá até a resposta que solucionou e a selecione como solução para o seu tópico. Todos que tiverem a mesma dúvida que você, podem consultar esse tópico de acordo com a resposta escolhida como solução. Isso ajuda a todos da comunidade que possuem dúvidas semelhantes.

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Alkindar33
      Ultimamente tenho ficado em dúvida sobre o futuro das linguagens em relação a mercado de trabalho, eu trabalho atualmente com NodeJS mas sinto que a linguagem está se reproduzindo como coelho em termos de desenvolvedores aprendendo ela e por causa da lei de oferta do mercado tende a se pagar menos e etc e não estou muito contente com a linguagem em si. Mas tenho dúvida de qual linguagem escolher para conseguir melhores salários e qual deve crescer mais a longo prazo. Linguagens que eu vi para Web: Go, Elixir, Ruby e Rust.
      Alguém tem alguma ideia de qual pode ser uma boa linguagem para focar o aprendizado?
    • Por Ferdz-Agencia-Digital
      @Matheus Tavares
       
      Estou montando uma API para usar com BD MySQL, mas futuramente migraremos o BD para MongoDB... deverei mudar muitas coisas da API ? Terei muito retrabalho ?
       
      O que acontece é que o projeto já existe e atualmente o BD é em MySQL e APIs em PHP... mas o projeto será migrado para a stack  MERN (MongoDB, Express, React e Node).
       
      A questão não é só performance, mas sim poder modernização pois o projeto irá se expandir precisa ser melhor escalável e a STACK será todo refeita, como disse acima, será usada MERN.
    • Por FerdzFernando
      Estou montando uma API para usar com BD MySQL, mas futuramente migraremos o BD para MongoDB... deverei mudar muitas coisas da API ? Terei muito retrabalho ?
       
      O que acontece é que o projeto já existe e atualmente o BD é em MySQL e APIs em PHP... mas o projeto será migrado para a stack  MERN (MongoDB, Express, React e Node)
    • Por dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
    • Por dayvidham
      Olá, atualmente faço parte de uma comunidade brasileira que está imersa em um projeto DeFi de um Token que roda na rede BSC.
      Temos um Token chamado SkyRocketSR criado a 31 dias e ja somos mais de 5000 pessoas interessadas no seu sucesso.
      Estamos em busca de programadores, designers e todos que poderem somar à comunidade de alguma forma.
      Alguém gostaria de saber mais do projeto e quem sabe compor a equipe da linha de frente já que somos uma comunidade?
      Obrigado e contamos com você.

      https://skyrocketsr.com/en/

      Aqui há mais sobre nós!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.