Trabajar con el formato JavaScript Object Notation (JSON) en ABAP (Serialización – Deserialización). SAP

Esta entrada del blog dará una visión general del trabajo con JavaScript Object Notation (JSON). Vamos a crear la salida de cadena JSON de la tabla interna y leer los datos JSON como entrada en el programa ABAP. Hoy en día el formato JSON es preferido sobre el formato XML debido a su sintaxis ligera y simple.

JSON consiste en datos de información de dos partes, la primera parte como campos clave (atributo nombre) y la segunda parte como valor de campo que se separa por dos puntos «:». Esta salida JSON puede ser fácilmente legible a través de cualquier edición de texto o visor JSON.

El formato JSON es apoyado por muchas organizaciones gubernamentales como un formato de datos válido para cargar, por ejemplo, el IVA de la UE, el portal GST.

En esta entrada del blog, voy a crear la salida JSON desde el programa ABAP (Parte 1) y convertir los datos de entrada de cadena JSON a la tabla interna ABAP (Parte 2). Cuando trabajamos con JSON nos encontramos con dos palabras como «serialización / Deserialización». Esta serialización significa convertir la estructura de datos de entrada (tabla) en formato de cadena JSON y la deserialización significa convertir los datos de cadena JSON en un formato de estructura dado.

Ahora exploramos a continuación en más detalles con el código ABAP.

Salida JSON del programa ABAP (código de la parte 1): He utilizado la tabla de demostración «SFLIGHT» para la demostración. Voy a seleccionar 4 campos CARRID, CONNID, FLDATE y PRICE de la tabla «SFLIGHT».

*& Author: Shravankumar Tiwari *
**This part 1- convert ABAP internal table data to JSON format
DATA gv_json_output TYPE string.
SELECT carrid, connid, fldate, price
  FROM  sflight
  INTO TABLE @DATA(it_sflight)
  UP TO 4 ROWS.

**JSON converter class – Method -> Serialize method to convert data in JSON
gv_json_output =
/ui2/cl_json=>serialize(
data = it_sflight
compress = abap_true pretty_name = /ui2/cl_json=>pretty_mode-camel_case ).

**Now check JSON output converted format
cl_demo_output=>display( gv_json_output )

Obtenemos la salida JSON para estos 4 registros como se muestra a continuación.

Convertir datos de entrada de cadena JSON en una tabla interna ABAP (Parte 2): En primer lugar, tenemos que crear una estructura para asignar los datos de cadena JSON. Deserialización necesitamos convertir los datos de la cadena a una tabla o estructura interna dada si se necesita decodificar un solo registro de la cadena JSON.

Ahora llamamos al método «DESERIALIZE» con todos los parámetros de entrada necesarios para exportar y cambiar los datos de la tabla interna. Llenamos el nombre de la cadena JSON en la exportación y convertimos los datos en el formato de la tabla interna «ITB_SFLIGHT_INPUT».

*& Author: Shravankumar Tiwari *
**This part 2 – convert JSON data to ABAP internal table
TYPES: BEGIN OF str_sflight_input,
carrid TYPE s_carr_id,
connid TYPE s_conn_id,
fldate TYPE s_date,
price TYPE s_price,
END OF str_sflight_input.

DATA itb_sflight_input TYPE STANDARD TABLE OF str_sflight_input.

CLEAR itb_sflight_input[].
**JSON converter class – Method -> Deserialize convert JSON string data into internal table
/ui2/cl_json=>deserialize(
EXPORTING json = gv_json_output
pretty_name = /ui2/cl_json=>pretty_mode-camel_case
CHANGING data = itb_sflight_input ).

**Internal table filled from JSON input data
cl_demo_output=>display( itb_sflight_input ).

Obtenemos el resultado que se muestra a continuación

Ahora podemos concluir usando la clase ABAP estándar «/UI2/CL_JSON» podemos crear una salida de cadena JSON desde la tabla interna usando el método «serialize» y convertir los datos de cadena JSON a la tabla interna ABAP usando el método «deserialize». También se puede utilizar la tabla interna de estructura profunda esta conversión JSON funciona en ambos sentidos. Ahora puedes consultar el código de ejemplo cuando trabajes con un objeto JSON.

Saludos.

Info desde: http://sapabapcentral.blogspot.com

Más info en: https://setevalapinsap.com

Etiquetas:, , ,