Leer cadena json e insertar registro en tabla de velneo


([N4] mblazquez) #1

Hola a todos,

mi idea es bastante simple, pero algo no me termina de funcionar. Tengo creada un proceso javascript con acceso web mediante el cual pretendo recibir una cadena JSON con información de un registro. Mi intención es leer esa cadena, parsearla y extraer los campos para insertar un registro en una de mis tablas de mi aplicación de velneo.

La variable la recibo bien, pero el fallo lo tengo en parsear el contenido de esa variable y crear un objeto para ir recorriéndolo. Lo hago de la siguiente forma:

`var array_json = theRoot.varToString(“ARRAY_JSON”);
'var ticket = JSON.parse(array_json);

No consigo que la variable ticket se convierta en un objeto para acceder a sus propiedades.

He probado también:

‘var ticket = eval(’(’ + array_json + ‘)’)

con el mismo resultado.

Espero que alguien me pueda ayudar o mandarme algún código de ejemplo donde se haga algo similar.

Un saludo y gracias de antemano.


([N1] wikan) #2

Buenas @mblazquez, si ya recibes la cadena en formato JSON, has probado a trabajar directamente con el objeto

var json = theRoot.varToString(“ARRAY_JSON”);
alert( json.algo );


([N4] mblazquez) #3

Hola @wikan, haciendo lo que me dices me devuelve “undefined”. Ya lo había probado antes.
Gracias de todas formas.


([N1] wikan) #4

Prueba a hacer una alert del json que recibes a ver si es verdad que te viene con el formato correcto.


([N4] mblazquez) #5

Parece que he dado con la solución. En lugar de JSON.parse, parece ser que usando eval(array_json) me lo pilla bien. El json he comprobado que es correcto, he probado el script (sin la parte de velneo) en un navegador y va de fábula. Lo haré con eval, aunque está desaconsejado, por lo menos hasta que encuentre la solución para que me funcione el parse.

Muchas gracias por todo.


([N3] pacosatu) #6

Hola mblazquez.

Estuve trasteando hace un tiempo con el objeto JSON del API de Velneo y efectivamente hay que ir probando hasta encontrar la solución, y todo por la absoluta falta de documentación al respecto.

Prueba lo siguiente:

  • Para que se JSON.Parse(cadena) funcione correctamente, la cadena debe tener el siguiente formato:
    ‘{“campo1”:1,“campo2”:{“z”:[123,999,“texto”]}}’
    Es decir, los nombres de las propiedades deben ir entre comillas.
    Los valores de tipo cadena también irán entre comillas.

  • Para pasar la cadena JSON desde Velneo tendremos que sustituir las comillas por \c en el editor de fórmulas y de esta forma la función theRoot.varToString(“C_CADENA_JSON”) genera una cadena válida.

Pruébalo y nos cuentas.
Saludos
Paco Satué


([N4] mblazquez) #7

Hola Paco,

mi problema realmente no es pasar la cadena JSON desde velneo, sino hacia velneo, es decir, desde un script php como parámetro a un proceso con acceso web de velneo.

Ahora mismo, usando la función eval(cadenajson) lo consigo, con la cadena en el formato “{‘campo1’ : ‘valor1’,‘campo2’ : ‘valor2’}” y llamando al proceso desde velneo, porque cuando lo llamo desde el script php me sigue sin funcionar.

La verdad es que me tiene un poco quemado el tema.

Muchas gracias por la ayuda.


([N3] pacosatu) #8

Hola mblazquez.

Asegúrate que la cadena JSON llega al Script con las propiedades entre comillas dobles, con las comillas simples como tú indicas produce un error de parseo.

La cadena JSON es simplemente un String. Tanto si viene del propio Velneo como si viene de PHP hay que respetar un determinado formato. A veces la codificación de los caracteres juega una mala pasada.

En lugar de llamar al Proceso Script JS directamente desde PHP, yo llamaría a un proceso nativo de Velneo donde compruebo que el String JSON recibido es correcto y una vez validado llamo al Proceso Script JS para parsear el JSON.

Saludos
Paco Satué