Coder Social home page Coder Social logo

aula-read-json's Introduction

JSON File Reading and Navigation

Objective

The objective of this project is to demonstrate how to read a JSON file in text mode and navigate through its objects. The implementation is provided in the following programming languages: JavaScript (js), Python, Java, and C#.

Steps

JavaScript

Para o JS utilizamos o export para exportar o conteúdo do jsonData como um módulo. Neste caso, usamos a sintaxe da ECMAScript Modules (ESM).

// file.json
export const jsonData = [
    ...
];

// read-file.json
import { jsonData } from "./file.js";

Python

Ocorreram alguns problemas utilizando a lib datetime do Python na leitura do valor do timestamp no formato UTC (ISO 8601 format).

ValueError: Invalid isoformat string: '2023-12-06T16:34:56Z'
  • method doesn't directly support the 'Z' notation for Zulu time (UTC).

Para lidar com este erro, é necessário utilizar a lib python-dateutil. Para isso, é necessário seguir os passos abaixo para instalar o mesmo

pip install python-dateutil

Em seguida, no código é necessário utilizar a função abaixo:

from dateutil import parser

# Function to parse the timestamp into a datetime object
def parse_timestamp(timestamp):
    return parser.isoparse(timestamp)

for course in jsonData:
    print(f"Curso: {course['title']}")

    for lesson in course['lessons']:
        print(f"  Aula {lesson['id']}: {lesson['title']}")
        print(f"    Media: {lesson['media']}")
        print(f"    Timestamp: {parse_timestamp(lesson['timestamp'])}")

    print()

Java

Adicionar dependência do Jackson ao projeto

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.0</version>
</dependency>

Lidar com campo do tipo timestamp

A lib do Jackson não está configurado para lidar com tipos de data/hora do Java 8 (java.time.Instant) por padrão, para corrigir, seguir os passos abaixo:

  • Adicionar o módulo jackson-datatype-jsr310 ao seu projeto.

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.13.0</version>
    </dependency>
  • Configurar o ObjectMapper para registrar o módulo.

    public static void main(String[] args) {
        ObjectMapper objectMapper = new ObjectMapper();
        
        objectMapper.registerModule(new JavaTimeModule());
        ...
    }

Deserialize um array JSON para um objeto

Você pode fazer isso usando o método readValue com a classe TypeReference

Utilizar o método readValue com a classe TypeReference, conforme exemplo abaixo:

List<Course> courses = objectMapper.readValue(jsonFile, new TypeReference<List<Course>>() {});

C#

Adicionar a lib Newtonsoft.Json

Para adicionar a lib Newtonsoft.Json usando o NuGet Package Manager ou o dotnet CLI:

dotnet add package Newtonsoft.Json

Passos para incluir arquivo JSON:

  1. Adicione o arquivo JSON ao projeto:

    • Crie ou copie seu arquivo JSON para o diretório do seu projeto.
    • No Visual Studio, clique com o botão direito do mouse no diretório do projeto no Solution Explorer.
    • Escolha "Add" > "Existing Item" e selecione seu arquivo JSON.
  2. Configure a cópia para o diretório de saída:

    • Selecione o arquivo JSON no Solution Explorer.
    • No painel de propriedades, defina a propriedade "Copy to Output Directory" para "Copy if newer" ou "Copy always".
  • Dessa forma, o arquivo JSON será copiado para o diretório de saída (por exemplo, bin\Debug ou bin\Release) quando você compilar o projeto, e você pode usar o caminho relativo para acessá-lo durante a execução do aplicativo.

aula-read-json's People

Contributors

oliveiralex avatar

Stargazers

 avatar TassyHelen avatar  avatar  avatar Fernando da Silva avatar Salomao Dantas Farina avatar Kauê Matos avatar

Watchers

 avatar Nelio Alves avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.