The quotes in the COMPUTE don't get escaped! Invalid JSON is the result. Unfortunately, we have some data that contains double-quotes in descriptions (not so strange for a tyre company; wheel sizes are usually expressed in inches!).
For XML formats, we can enable SET HTMLENCODE ON. Is there a similar setting for JSON?This message has been edited. Last edited by: FP Mod Chuck,
WebFOCUS 8.1.03, Windows 7-64/2008-64, IBM DB2/400, Oracle 11g & RDB, MS SQL-Server 2005, SAP, PostgreSQL 11, Output: HTML, PDF, Excel 2010 : Member of User Group Benelux :
November 21, 2018, 03:00 PM
Efrem
This is what you want. Right?
{"records" : [ {"COUNTRY" : "ENGLAND","OUCH" : "A \"quote\"!"} , {"COUNTRY" : "FRANCE","OUCH" : "A \"quote\"!"} , {"COUNTRY" : "ITALY","OUCH" : "A \"quote\"!"} , {"COUNTRY" : "JAPAN","OUCH" : "A \"quote\"!"} , {"COUNTRY" : "W GERMANY","OUCH" : "A \"quote\"!"} ]}
The Escaping special characters functionality was put in WebFOCUS 8203 (DM 7708).
Efrem
November 21, 2018, 03:03 PM
Waz
You will probably have to use something like STRREP to replace " with \" before the data is returned.
Waz...
Prod:
WebFOCUS 7.6.10/8.1.04
Upgrade:
WebFOCUS 8.2.07
OS:
Linux
Outputs:
HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!
November 21, 2018, 03:39 PM
Hallway
So, I replaced the PCHOLD with HOLD and saved the output to the baseapp folder:
TABLE FILE CAR
SUM
COMPUTE OUCH/A20 = 'A "quote"!';
BY COUNTRY
ON TABLE HOLD AS baseapp/_json FORMAT JSON
END
When I opened the json file with a text editor (since AppStudio can't open it) It has the properly escaped double quotes:
{"records" : [
{"COUNTRY" : "ENGLAND","OUCH" : "A \"quote\"!"}
,
{"COUNTRY" : "FRANCE","OUCH" : "A \"quote\"!"}
,
{"COUNTRY" : "ITALY","OUCH" : "A \"quote\"!"}
,
{"COUNTRY" : "JAPAN","OUCH" : "A \"quote\"!"}
,
{"COUNTRY" : "W GERMANY","OUCH" : "A \"quote\"!"}
]}
I am on version 8202M, so maybe that is a bug in your 8.1.03 version. I would submit a ticket.
Hallway
Prod: 8202M1
Test: 8202M4
Repository:
OS:
Outputs:
November 21, 2018, 03:46 PM
Hallway
This works for an HTML output as well:
TABLE FILE CAR
SUM
COMPUTE OUCH/A20 = 'A "quote"!';
BY COUNTRY
ON TABLE HOLD FORMAT JSON
END
-HTMLFORM BEGIN NOEVAL
<pre>
!IBI.FIL.HOLD;
</pre>
-HTMLFORM END
Try changing the PCHOLD to HOLD and see if that makes a difference.
Hallway
Prod: 8202M1
Test: 8202M4
Repository:
OS:
Outputs:
November 22, 2018, 03:31 AM
Dave
Hi Wep,
I didn't even know JSON was an option. ( but we still on 8.009 ).
I've tested your code on our to-be-environment ( 8203 ) there it works fine.
I do get escaped output:
snippet:
{"records" : [{"COUNTRY" : "ENGLAND","OUCH" : "A \"quote\"!"},{"COUNTRY" : "FRANCE","OUCH" : "A \"quote\"!"},{"
might be a 'know-to-some' bug that's been fixed in ( at least ) 8203.
Greets, Dave
_____________________ WF: 8.0.0.9 > going 8.2.0.5
November 22, 2018, 07:48 AM
Wep5622
Thanks for confirming this fixed in 82.
This means that the 8103 JSON implementation has several issues that I know of:
Single item results have mismatching accolade pairs
Double-quotes in strings are not escaped
There is no documentation
Bit of a mess...
WebFOCUS 8.1.03, Windows 7-64/2008-64, IBM DB2/400, Oracle 11g & RDB, MS SQL-Server 2005, SAP, PostgreSQL 11, Output: HTML, PDF, Excel 2010 : Member of User Group Benelux :
November 22, 2018, 09:25 AM
Efrem
Wep5622, May I suggest that you open a Hottrack case asking for a Documentation enhancement for HOLD FORMAT JSON.