Focal Point
[CLOSED] Unescaped quotes in FORMAT JSON

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/1087039096

November 21, 2018, 11:33 AM
Wep5622
[CLOSED] Unescaped quotes in FORMAT JSON
There's probably some setting to escape these, but there appears to be absolutely zero documentation on HOLD FORMAT JSON.

Here's the issue:
TABLE FILE CAR
SUM
     COMPUTE OUCH/A20 = 'A "quote"!';
BY  COUNTRY
ON TABLE PCHOLD FORMAT JSON
END


This returns JSON:
{ "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 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.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs: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:

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.

It could help other users in the future.