Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Monday, August 15, 2022

JSON para desarrolladores en RPGLE IBM, Iseries/JSON for RPGLE Developers

                         


JSON son las siglas de Java Script Object Notation

 Se trata de un Standard internacional para dar formato al envío de la data entre dos plataforma o entre dos lenguajes de programación.

 A partir del 2015 se popularizó este formato superando con creces al formato estandard XML que hasta ese entonces reinaba sin competencia alguna.

Algunos expertos coincide en que JSON ocupa menos espacio y es mas sencillo de interpretar que XML.

JSON soporta los siguiente tipos de data:

  • Numerico
  • String
  • Arreglos (Array)
  • Objetos (Ds= Data Structure, en el caso de RPGLE IBM)
  • Boleanos = true/false
  • Nulos = null       

Para identificar las estructuras de data la sintaxis es la siguiente:

  •  Inicio y fin de data structure (DS): { }  Llave que abre y cierra respectivamente
  •  Inicio y fin de un arreglo : [ ]  Corchete que abre y cierra respectivamente

Para identificar los elementos simples dentro de las estructuras:

  •    "Nombre del elemento": valor del elemento
  •     Los elementos se separan con coma. (,)
El stream de envio siempre comienza con { y termina con }

Veamos el siguiente ejemplo:

Supongamos que queremos enviar en formato JSON los datos contenidos en la siguiente estructura de RPG. DS = Data Structure

 


 Pasos a seguir:

1.-Entender el significado de la estructura que vamos a enviar. En este caso, vamos a enviar el saldo final y el saldo promedio de la cuenta de un cliente de los ultimos tres meses del año 2022 y 2021. Primero el año 2022 y luego el año 2021.

2.-Interpretar la estructura correctamente. Muy Importante!!!

 Se trata de enviar una estructura que contiene 

  • Un elemento simple:  ClientId 
  • Un arreglo de dos elementos: DS_Account
       Los elementos del arreglo DS_Account son a su vez, DS.

3.-Colocar la sintaxis correspondiente.

     Enviar un objeto (DS) que tiene:

 {  "Ds_client": {

       A.- Un campo simple (Clientid)  "ClientId": "EX-8976531234" 

       B.- Un arreglo: DS-Account   [

          Cada elemento del arreglo es una DS: {

           B.1-Account_number.  "Account_number":89712345,

           B.2-Year. "Year":2022,

           B.3-Un arreglo Ds-balance de tres elementos. [

           Cada elemento del arreglo es a su vez una DS. {

                  La DS contiene dos elementos simples

                   B.3.1- Balance "Balance": 146.34,

                   B.3.2  Average  "Average": 125.78

         Fin de la DS del primer elemento del arreglo interno  },

          //Segundo elemento del arreglo interno

                   {
                       "Balance": 288.50,
                       "Average": 145.98  
                    },

          //Tercer elemento del arreglo interno

                   {
                           "Balance": 426.80,
                           "Average": 375.95
                   }  

                   ]  //cierra arreglo Ds-balance
               },     //cierra primer elemento del arreglo DS-Account

                .......

                .......

                .......

               Repetimos el proceso para el año 2021, que sería el segundo elemento 

               del arreglo Ds-Account

           A continuación generamos el formato completo de la DS en JSON:

          

  {
"DS_Client":
    {
      "ClientId":"EX-8976531234",
      "Ds_Account":
       [
         {
            "Acount_Number":89712345,
            "Year": 2022,
            "Ds-Balance":
             [
              {
               "Balance": 146.34,
               "Average": 125.78   
               },
            {
               "Balance": 288.50,
               "Average": 145.98  
             },
             {
               "Balance": 426.80,
               "Average": 375.95
              }
               ]
            },
           {
              "Acount_Number":89712345,
              "Year": 2021,
              "Ds-Balance":
               [
                {
                 "Balance": 121.33,
                 "Average": 115.78
                 },
                {
                 "Balance": 123.50,
                 "Average": 135.98
                 },
                {
                 "Balance": 226.60,
                 "Average": 178.90
                 }
                ]
               }
           ]
        }
}
   
Antes de finalizar algunos tips importantes:

      1.-Cuando queremos asignar un valor nulo a un campo simple lo 
          escribimos   asi:
          "nombredelcampo":null 
          Por ejemplo: "Saldo":null
    
      2. -El caracter de escape es "\" :
 
        2.1-Para que un campo tenga como valor comilla doble: " 
             debemos  enviarlo  así:
              "nombredelcampo":"\"
              Por ejemplo: "Parentesco":"\""
              El backslash indica que la doble comilla " no  es un   separador de 
              elementos  sino el caracter que se desea enviar.
 
         2.2-Para enviar un "\" como valor de un campo debemos colocar doble                        backslash asi:
               Por ejemplo: "Parentesco":"\\ "
       
         3.-Toda estructura que abre debe tener su correspondiente símbolo 
             que la cierra. 

                            { ........  }       [ ........   ]  

         4.-Se puede incluir este formato en una variable tipo char y enviarla 
             o  recibirla por párametro, como cualquier string comun, omitiendo 
             los blancos intermedios. Se coloca de esta manera en este articulo 
            para  visualizar con mayor facilidad la lógica y los simbolos que cierran 
            y abren cada estructura.

         ___________

         Dejo a continuación algunos enlaces de interés:

         https://techchannel.com

         https://www.w3schools.com 

         https://stackoverflow.com/

         https://www.scottklement.com/yajl/

         https://www.toptal.com/web/json-vs-xml-part-1


        

     Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo o en el enlace de Linkedin que está encima de este mensaje.  El conocimiento es valioso, compártelo. 

    Autor: Ing. Liliana Suárez

No comments: