JSON-READ error when reading from a JSON-WRITE

Posted by christian.bryan@capita.co.uk on 11-Jun-2018 07:57

Hi 

Please see below simple program which returns an error on the JSON-READ:

Error status  yes Error parsing JSON: expected bracket, but found brace. (15358)

This seems odd as the JSON was created from a JSON-WRITE and is valid JSON as far as i can tell.

*******************************************************************************************************************

BLOCK-LEVEL ON ERROR UNDO, THROW.
DEFINE TEMP-TABLE tt-CustomUIMessages SERIALIZE-NAME "UIMessages"
FIELD MessageNumber AS INTEGER
FIELD MessageType AS CHARACTER /* Warning, Input, Textarea, Lookup (select), Radioset */
FIELD MessageLabel AS CHARACTER
FIELD MessageValues AS CHARACTER
FIELD MessageHelp AS CHARACTER
FIELD MessageAnswer AS CHARACTER
FIELD MessageError AS CHARACTER
FIELD MessageRead AS LOGICAL
INDEX idx-primary IS PRIMARY UNIQUE MessageNumber
INDEX idx-answered MessageType MessageAnswer
INDEX idx-read MessageType MessageRead.

/* This table holds the Key / Value pairs for dropdowns / <select><option name="key">Value</option></select> */
DEFINE TEMP-TABLE tt-CustomUIMessagesValues SERIALIZE-NAME "UIMessageValues"
FIELD MessageNumber AS INTEGER SERIALIZE-HIDDEN
FIELD MessageKey AS CHARACTER
FIELD MessageValue AS CHARACTER
INDEX idx-primary IS PRIMARY UNIQUE MessageNumber MessageKey.

DEFINE DATASET UiMessages SERIALIZE-HIDDEN
FOR tt-CustomUIMessages, tt-CustomUIMessagesValues
DATA-RELATION UIMessageValue1 FOR tt-CustomUIMessages, tt-CustomUIMessagesValues RELATION-FIELDS(MessageNumber, MessageNumber) NESTED.


CREATE tt-CustomUIMessages.
ASSIGN tt-CustomUIMessages.MessageNumber = 1
tt-CustomUIMessages.MessageType = "Lookup"
tt-CustomUIMessages.MessageLabel = "WHat is the capital of England".

CREATE tt-CustomUIMessagesValues.
ASSIGN tt-CustomUIMessagesValues.MessageNumber = 1
tt-CustomUIMessagesValues.MessageKey = "LON"
tt-CustomUIMessagesValues.MessageValue = "London".

CREATE tt-CustomUIMessagesValues.
ASSIGN tt-CustomUIMessagesValues.MessageNumber = 1
tt-CustomUIMessagesValues.MessageKey = "LIV"
tt-CustomUIMessagesValues.MessageValue = "LIverpool".

DATASET UiMessages:WRITE-JSON("file", "C:\OpenEdge\WRK117_64\sample_json.txt",TRUE, ?) NO-ERROR.


DATASET UiMessages:READ-JSON("file", "C:\OpenEdge\WRK117_64\sample_json.txt","Empty") NO-ERROR.
OUTPUT TO "C:\OpenEdge\WRK117_64\sample_json.log".

MESSAGE "Error status " ERROR-STATUS:ERROR ERROR-STATUS:GET-MESSAGE(1).
OUTPUT CLOSE.

FOR EACH tt-CustomUIMessages NO-LOCK:

MESSAGE "Message Number: " tt-CustomUIMessages.MessageNumber.

END.

All Replies

Posted by onnodehaan on 11-Jun-2018 08:09

Same here... strange bug.

Running OpenEdge 11.7.0

Posted by jsandrea on 11-Jun-2018 08:35

Hi, when omitted SERIALIZE-HIDDEN from DEFINE DATASET UiMessages your example worked well.

Posted by christian.bryan@capita.co.uk on 11-Jun-2018 10:38

My problem was the use of the DEFINE DATASET UiMessages SERIALIZE-HIDDEN.

Removing the serialize-hidden resolved the issue e.g.

DEFINE DATASET UiMessages

Posted by Robin Brown on 11-Jun-2018 13:37

This is a bug.  Please log an issue with Tech Support.

Robin

This thread is closed