¡Hola a todos! En este post vamos a ver como realizar consultas de acción sobre un archivo Json.

Las consultas de acción son aquellas que no devuelven ningún registro, es decir las encargadas de añadir registros (Post), de modificar registros (Put) y de eliminar registros (Delete). Los archivos Json (JavaScript Object Notation), es un formato de texto ligero para el intercambio de datos, se usa como alternativa al XML y cada dia se usa más.

Para ver el funcionamiento de las consultas de acción sobre un archivo Json vamos a realizar un pequeño ejemplo y lo vamos a seguir paso a paso.

¡EMPECEMOS!

Lo primero que haremos será abrir VisualStudio y crear un nuevo proyecto de tipo WebApi, llamado ServicioApiColoresJson.

Imagen1

Una vez creado el Web Api vacío, vamos a insertar el archivo Colores.json dentro de una carpeta que vamos a llamar Documentos.

Imagen2

coloresjson

Una vez tengamos el archivo vamos a agregar el paquete NuGet Newtonsoft.json que sera necesario para la lectura y escritura del archivo JSON. Despues de agregar el NuGet vamos a crear una clase Color dentro de la carpeta Models que tendra este aspecto:

Imagen3

Los atributos [JsonProperty(«xxxx»)] sirven para mapear el archivo JSON y adaptarlo a la clase que hemos creado.

Una vez tengamos la clase creada, vamos a crear otra clase llamada ListaColores, también dentro de la carpeta Models, que sera para poder almacenar varios colores.

Imagen4

Una vez creada, vamos a crear la ultima clase, que sera nuestro modelo y lo llamaremos ModeloColores (también sobre la carpeta Models). En esta clase crearemos los metodos que queramos que tengan nuestra API, en este ejemplo vamos a tener 5 metodos, que seran los siguientes:

GetColores → Metodo encargado de mostrar una lista de colores que nos proporcionara el archivo .json

Imagen5

 

BuscarColor→ Metodo encargado de buscar un color en concreto

Imagen6


var json = File.ReadAllText(this.Path) → leer el archivo que está en la ruta indicada

var jObject = JObject.Parse(json) → Convertir el archivo de texto en formato Json que el entorno pueda entender

JArray colores = (JArray)jObject[«colores»] → Hacer un array de todos los colores dentro del archivo .json


InsertarColor→ Metodo encargado de insertar un nuevo color al archivo .json

Imagen7

ModificarColor→ Metodo encargado de modificar un color ya creado

Imagen8

EliminarColor → Metodo encargado de eliminar un color del archivo .json

Imagen9


ListaColores lista = JsonConvert.DeserializeObject<ListaColores>(json) → Deserializa el archivo Json a un tipo de .NET, en nuestro caso ListaColores

String newjson = JsonConvert.SerializeObject(lista, Formatting.Indented) → Serializa un objeto y lo transforma en Json con un formato indentado

File.WriteAllText(Path, newjson) → Escribe en la ruta indicada (ruta del archivo .json) el String indicado (Nuestro Colores.json modificado)


Una vez tengamos nuestro modelo listo, nos quedará crear la ultima parte y es el controlador. Para crear este controlador haremos click derecho sobre la carpeta de Controllers Add Controller y seleccionaremos Web API 2 Controller – Empty. A este archivo lo llamaremos ColoresController y tendra la siguiente estructura:

Imagen11

El metodo CrearModelo() lo llamaremos en los demas metodos para instanciar la clase ModeloColores que hemos creado anteriormente, ya que necesitamos la ruta del archivo .json para poder trabajar con el propio archivo.

En este controlador tambien tendremos los metodos de las consultas de acción que necesitamos (insertar, modificar y eliminar)

Imagen12

Los atributos [Route(«xxx/xxx/{xxx}»)] sirven para mapear la URL del sitio web y redirigir las peticiones a la URL que nosotros indiquemos.

Una vez llegados a este punto nuestra Web API estará lista para usarse, solo falta crear un Cliente para poder visualizar los contenidos que nos devuelva nuestra API. Podemos visualizar desde el navegador ciertas funcionalidades sin necesidad de crear un cliente que consuma la API, pero su funcionalidad seria basicamente las consultas de GetColores() y BuscarColores().

Imagen15

Si quereis ver como es el funcionamiento completo de esta API, os voy a dejar el codigo en este enlace a GitHub para que lo descargueis y podais ver su funcioanmiento real.

Autor/a: Adrián Miguel Blanco

Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin

Centro: Tajamar

Año académico: 2017-2018

Linkedin : Adrian Miguel Blanco

Codigo en GitHub: ServicioApiColoresJson

 

 

This Post Has One Comment

  1. Mauricio Reply

    Hola cómo estás,
    Te cuento que hasta aquí lo hago mas o menos del mismo modo y está clarísima tu explicación, ahora me he topado con algo que todavía no pude resolver y aprovecho a preguntarte. La cuestión es: Cómo modificarías este código si quisieras hacer una api de consulta.
    Es decir que puedas hacer un get así : …./api/colores?search id in (2,4,6)
    o asi : …/api/colores?search color=rojo.
    Me explico?
    He buscado info para conseguir esto pero no la encontré aún.
    Ojala puedas ayudarme.
    Desde ya Muchas Gracias!

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.