¡Saludos, amantes de la programación en "NaviWorld"! En la búsqueda constante de simplificar tareas en Navision, esta semana nos sumergimos en un terreno que a menudo resulta un laberinto en Navision: los JSON. Crearlos puede ser un desafío, ¡pero no temáis! Estoy aquí para presentaros una DLL que he creado para hacer de esta tarea un paseo en el parque. 😎

Si no sabéis que es una DLL o como crearla os aconsejo revisar primero los siguientes post:

Ejemplo básico crear DLL

Integración DLL a Navision

Venga, ¡Vamos, manos a la obra! 😚

Creación del Proyecto y Librería:
Comenzamos creando un nuevo proyecto en Visual Studio, donde daremos vida a nuestra DLL. Para garantizar un flujo suave, añadimos la librería Newtonsoft a través de NuGet. Esta librería es la aliada perfecta para trabajar con JSON de manera eficiente.

Constructor y Variables Globales:
Dentro de nuestra clase, declaramos las variables globales necesarias y creamos un constructor donde inicializamos algunas de ellas. Esta parte es crucial para preparar el terreno antes de sumergirnos en las funciones específicas.

namespace MgtJson.Class
{
    public class CreateJson
    {
        private JsonTextWriter jsonWriter;
        StringBuilder buldier;
        StringWriter writer;

        public CreateJson()
        {
            buldier = new StringBuilder();
            writer = new StringWriter(buldier);
            jsonWriter = new JsonTextWriter(writer);
            jsonWriter.Formatting = Formatting.Indented;

        }

     }
}

Funciones Esenciales:
Enfrentémonos a las funciones que hacen que esta DLL sea una joya en el mundo de los JSON:

  • ReturnJson(): Devuelve el JSON en formato de texto. Perfecto para obtener el resultado final de nuestro trabajo.
        public String ReturnJSon()
        {
            jsonWriter.Flush();
            string jsonstr = buldier.ToString();
            return jsonstr;
        }
  • AddLine(): Agrega una nueva línea al JSON. Esta función es esencial para construir estructuras más complejas.

        public void AddLine(String tag, String valor)
        {
            jsonWriter.WritePropertyName(tag);
            jsonWriter.WriteValue(valor);
        }
  • InitJson() y EndJson(): Inician y finalizan el JSON. Estos son los cimientos que sostienen todo el proceso.


        public void InitJson()
        {
            jsonWriter.WriteStartObject();
        }

        public void EndJson()
        {
            jsonWriter.WriteEndObject();
        }
  • InitAnidado() y EndAnidado(): Ideales cuando necesitamos crear un JSON dentro de otro. La jerarquía toma forma con estas funciones.

        public void InitAnidado(String tagAnidado)
        {
            if (tagAnidado != "")
            {
                jsonWriter.WritePropertyName(tagAnidado);
            }

            jsonWriter.WriteStartObject();
        }

        public void EndAnidado()
        {
            jsonWriter.WriteEndObject();
        }
  • InitArray() y EndArray(): Imprescindibles para la creación y finalización de arrays dentro de un JSON. A veces, la complejidad está en los detalles.

        public void InitArray(String tagArray)
        {
            if (tagArray != "")
            {
                jsonWriter.WritePropertyName(tagArray);
            }
            jsonWriter.WriteStartArray();
        }

        public void EndArray()
        {
            jsonWriter.WriteEndArray();
        }

Crear JSON puede ser un desafío, pero con la ayuda de esta DLL, estamos dando un paso más cerca de la simplicidad en Navision. Como siempre, el código completo y ejemplos detallados están disponibles en mi repositorio de GitHub.

Espero que esta herramienta os sea tan útil como a mí. ¡Hasta la próxima, programadores de "NaviWorld"! 🚀