Initial value for a longchar to contain a json

Posted by OctavioOlguin on 14-Jun-2019 01:56

I'm trying to generate and a simple encoder, but I'm not able to compile this code...   What Am I missing?

DEFINE TEMP-TABLE ttEncoder
    FIELD valor AS INTEGER
    FIELD coded AS CHAR.

DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL
'{"ttEncoder":[
{"valor":1   ,"coded":"um"},
{"valor":2   ,"coded":"xy"},
{"valor":3   ,"coded":"st"},
{"valor":4   ,"coded":"et"},
{"valor":5   ,"coded":"eg"},
{"valor":6   ,"coded":"ue"},
{"valor":7   ,"coded":"fy"},
{"valor":8   ,"coded":"sp"},
{"valor":9   ,"coded":"uq"},
{"valor":103 ,"coded":"fz"}]}'
.


TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable).

FOR EACH ttEncoder:
    DISPLAY ttEncoder.
END.

Thanks for your help.

Jorge Octavio

Posted by mollyfed on 14-Jun-2019 03:17

Hey mate,

Escape the curley brackets. Like this:

DEFINE TEMP-TABLE ttEncoder

   FIELD valor AS INTEGER

   FIELD coded AS CHAR.

DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INIT

'~{"ttEncoder":[

~{"valor":1   ,"coded":"um"~},

~{"valor":2   ,"coded":"xy"~},

~{"valor":3   ,"coded":"st"~},

~{"valor":4   ,"coded":"et"~},

~{"valor":5   ,"coded":"eg"~},

~{"valor":6   ,"coded":"ue"~},

~{"valor":7   ,"coded":"fy"~},

~{"valor":8   ,"coded":"sp"~},

~{"valor":9   ,"coded":"uq"~},

~{"valor":103 ,"coded":"fz"~}]~}'

.

TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable).

FOR EACH ttEncoder:

   DISPLAY ttEncoder.

END.

Posted by Stefan Drissen on 14-Jun-2019 06:39

Sharing from ABL Dojo seems to now just save the code, so here you go:

DEFINE TEMP-TABLE ttEncoder
    FIELD valor AS INTEGER
    FIELD coded AS CHAR.
 
DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL '
	~{"ttEncoder":[
		~{"valor":1   ,"coded":"um"},
		~{"valor":2   ,"coded":"xy"},
		~{"valor":3   ,"coded":"st"},
		~{"valor":4   ,"coded":"et"},
		~{"valor":5   ,"coded":"eg"},
		~{"valor":6   ,"coded":"ue"},
		~{"valor":7   ,"coded":"fy"},
		~{"valor":102 ,"coded":"hy"},
		~{"valor":103 ,"coded":"fz"}
	]
}'.
 
 
TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable).
 
FOR EACH ttEncoder:
    DISPLAY ttEncoder.
END.

All Replies

Posted by OctavioOlguin on 14-Jun-2019 02:02

Neither, using oposite thick and quotes, would succed

DEFINE TEMP-TABLE ttEncoder
    FIELD valor AS INTEGER
    FIELD coded AS CHAR.

DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO
INITIAL
"{'ttEncoder':[
{'valor':1   ,'coded':'um'},
{'valor':2   ,'coded':'xy'},
{'valor':3   ,'coded':'st'},
{'valor':4   ,'coded':'et'},
{'valor':5   ,'coded':'eg'},
{'valor':6   ,'coded':'ue'},
{'valor':7   ,'coded':'fy'},
{'valor':102 ,'coded':'hy'},
{'valor':103 ,'coded':'fz'}]}".


TEMP-TABLE ttEncoder:READ-JSON('LONGCHAR', lcTable).

FOR EACH ttEncoder:
    DISPLAY ttEncoder.
END.

Posted by mollyfed on 14-Jun-2019 03:17

Hey mate,

Escape the curley brackets. Like this:

DEFINE TEMP-TABLE ttEncoder

   FIELD valor AS INTEGER

   FIELD coded AS CHAR.

DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INIT

'~{"ttEncoder":[

~{"valor":1   ,"coded":"um"~},

~{"valor":2   ,"coded":"xy"~},

~{"valor":3   ,"coded":"st"~},

~{"valor":4   ,"coded":"et"~},

~{"valor":5   ,"coded":"eg"~},

~{"valor":6   ,"coded":"ue"~},

~{"valor":7   ,"coded":"fy"~},

~{"valor":8   ,"coded":"sp"~},

~{"valor":9   ,"coded":"uq"~},

~{"valor":103 ,"coded":"fz"~}]~}'

.

TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable).

FOR EACH ttEncoder:

   DISPLAY ttEncoder.

END.

Posted by Stefan Drissen on 14-Jun-2019 06:16

I see that MollyFed's post has not yet made it to the forum... but you only need to escape the /opening/ curly braces with a tilde.

Posted by Patrick Tingen on 14-Jun-2019 06:21

How on earth do you get this to compile? Escaping the the curly braces does not work.

Posted by mollyfed on 14-Jun-2019 06:35

You have to see the code, but it has to be the first version with ' on the outside and " on the inside from memory.

Posted by Stefan Drissen on 14-Jun-2019 06:39

Sharing from ABL Dojo seems to now just save the code, so here you go:

DEFINE TEMP-TABLE ttEncoder
    FIELD valor AS INTEGER
    FIELD coded AS CHAR.
 
DEFINE VARIABLE lcTable AS LONGCHAR NO-UNDO INITIAL '
	~{"ttEncoder":[
		~{"valor":1   ,"coded":"um"},
		~{"valor":2   ,"coded":"xy"},
		~{"valor":3   ,"coded":"st"},
		~{"valor":4   ,"coded":"et"},
		~{"valor":5   ,"coded":"eg"},
		~{"valor":6   ,"coded":"ue"},
		~{"valor":7   ,"coded":"fy"},
		~{"valor":102 ,"coded":"hy"},
		~{"valor":103 ,"coded":"fz"}
	]
}'.
 
 
TEMP-TABLE ttEncoder:READ-JSON("LONGCHAR", lcTable).
 
FOR EACH ttEncoder:
    DISPLAY ttEncoder.
END.

Posted by jonathan.wilson on 14-Jun-2019 07:55

This is caused by ABL reserved Special Characters;

https://documentation.progress.com/output/ua/OpenEdge_latest/dvref/~-special-character.html#

~ everywhere is your friend

This thread is closed