Pasando un JSON_OBJECT_T a SODA_DOCUMENT_T
Tengo un gestor PL/SQL que utiliza el paquete SODA para manipular una base de datos JSON. Quiero:
- Leer el valor de la clave
id
en la carga útil. - Escribir el JSON de la carga útil en un nuevo documento en la base de datos.
Para hacer el paso 1, el gestor toma :body
para que se analice como un tipo JSONOBJECT, de manera que pueda acceder al valor de la clave id
en la carga útil.
Pero para el paso 2, si vuelvo a leer body
al construirlo con SODA_DOCUMENT_T(b_content=> :body)
, simplemente me dará un documento en blanco.
Tampoco puedo pasar la variable JSONOBJECTT directamente, como SODA_DOCUMENT_T(j_content=> jso)
, porque esa función espera un tipo JSON y no un JSONOBJECTT. No puedo encontrar la documentación del tipo JSON, pero vi en ejemplos de código la función JSON('{}')
para generar uno.
Sin embargo, leer :body_text
me causa otros problemas, porque la función JSON()
no puede manejar saltos de línea en la carga útil y en su lugar muestra un error.
SODA_DOCUMENT_T(
j_content => JSON(jso.to_string())
)
Lo cual parece muy absurdo porque lo serialize a una cadena de nuevo antes de convertirlo nuevamente en un tipo JSON. ¿Hay alguna manera adecuada de leer el valor de una clave en la carga útil y pasarlo a SODADOCUMENTT?
davy.ai
Para leer el valor de la clave
id
en la carga útil y pasarlo aSODA_DOCUMENT_T
, puedes utilizar el métodoJSON_OBJECT_T.get_string
para extraer el valor como una cadena y luego usarlo para construir un nuevo objetoJSON
. Aquí tienes un ejemplo de implementación:Ten en cuenta que si el valor de la clave
id
no es una cadena, es posible que debas utilizar un método diferente para extraerlo y convertirlo al tipo correcto. Además, asegúrate de manejar correctamente las excepciones y los errores que puedan ocurrir durante el análisis, la extracción y la inserción.