Como aprendo a escrever um programa que pode extrair objetos de JSON/XML?

Como aprendo a escrever um programa que pode extrair objetos de JSON/XML?

Isenção de responsabilidade

Em primeiro lugar, esta é uma das minhas primeiras perguntas sobre SE, por isso peço desculpas se quebrei alguma convenção escrita ou não.

Introdução

Em meu trabalho, em uma espécie de função de atendimento/suporte ao cliente, muitas vezes tenho que verificar os arquivos de log de uma de nossas interfaces REST (formato JSON).

Este log contém as solicitações feitas em um de nossos webservices. Os dados são estatisticamente interessantes para nós, então em algum momento um de nossos desenvolvedores criou uma ferramenta que extraiu dados do log e retornou um arquivo CSV que pode ser usado para manipulação de dados.

No entanto, um de nossos outros clientes (em outro servidor) usa o serviço web de maneira um pouco diferente, o que faz com que a ferramenta não consiga processar os dados. O problema é que nossos desenvolvedores estão muito ocupados e esse não é um problema de alta prioridade. Ainda assim, parece-me que isto deveria ser bastante simples, por isso gostaria de causar uma boa impressão e talvez construir isto sozinho.

Exemplo

Exemplo de entrada (JSON):

2017-01-31 05:42:43:587 -> 2017-01-31 05:42:43:587:1536:GET /v1/webservice_path.../ABC123 X-Api-Key:xyz  
2017-01-31 05:42:43:587 <- 2017-01-31 05:42:43:587:1536:OK:{
    "parameter 1": true,
    "parameter 2": true

Exemplo de saída (CSV):

ID;Parameter 1;Parameter 2
ABC123;true;true

eu tenho técnicotalentomas absolutamente nenhum treinamento formal em codificação além dos cursos mais básicos de HTML, Python e Ruby na CodeAcademy.

Pergunta

Na verdade, esta é uma pergunta de duas partes:

  1. Como/onde posso aprender a fazer tal ferramenta/script? Qual idioma, com qual canal aprender, etc.
  2. É realista para mim tentar construir isso? E o tempo gasto aprendendo isso vale a pena?

Informação extra

Quero construir a ferramenta sozinho; não copie em uma solução que um de vocês possa fazer em minutos. Uma razão para isso é que o uso do nosso serviço web varia de cliente para cliente, então outro cliente pode estar usando-o assim (para o qual também quero estar preparado):

2017-01-31 05:42:43:587 -> 2017-01-31 05:42:43:587:1536:GET /v1/webservice_path.../ ID_1:ABC123 ID2_:QWE456 X-Api-Key:xyz  
2017-01-31 05:42:43:587 <- 2017-01-31 05:42:43:587:1536:OK:{
    "parameter 1": true,
    "parameter 2": true
    "parameter 3": true

(observe que em vez de colocar a solicitação diretamente após /, a solicitação é inserida no campo "ID_1" e um campo extra opcional "ID_2" também contém dados)

informação relacionada