Robert Cemper · Jul 21, 2020 2m read

fast JSON formatting for Caché / Ensemble

This is a coding example working on Caché 2018.1.3 and IRIS 2020.2 
It will not be kept in sync with new versions 
It is also NOT serviced by InterSystems Support !

It is also an example of a customized command extension (ZZJSN) in Caché / Ensemble & IRIS

This is the Caché version for fast JSON formatting. But iIt also works in IRIS .  
To allow parallel existence in IRIS with the previous example this is named ZZJSNsee:

jsn="{"Name":"Li,Robert K.","SSN":"672-92-9664","DOB":"1975-01-12","Home":{"Street":"986 Washington Blvd","City":"Boston","State":"PA","Zip":"95802"},"Office":{"Street":"6012 First Place","City":"Reston","State":"MT","Zip":"77739"},"Spouse":{"Name":"Avery,Zelda H.","SSN":"323-13-7437","DOB":"1943-03-27","Home":{"Street":"196 Main Drive","City":"Youngstown","State":"WY","Zip":"53229"},"Office":{"Street":"4056 Franklin Court","City":"Bensonhurst","State":"IA","Zip":"27688"},"FavoriteColors":["Black"],"Age":77},"Age":45,"Title":"Associate Marketing Manager","Salary":10421}" 

This doesn't look so easy to follow.
So this is a shorthand to save time and reduce mistyping.

The attached is to be included into your %ZLANGC00.mac

output to device

USER>ZZJSN jsn        ; does the Output to Terminal / Device  
  "Name":"Li,Robert K.",
    "Street":"986 Washington Blvd",
    "Street":"6012 First Place",
    "Name":"Avery,Zelda H.",
      "Street":"196 Main Drive",
      "Street":"4056 Franklin Court",
  "Title":"Associate Marketing Manager",

output to stream

set st=##class(%Stream.GlobalCharacter).%New()
ZZJSN jsn:st      ; write result to Stream

output to string

ZZJSN jsn:"BOBBY"  ; writes it to local variable BOBBY
0 0 0 130
Log in or sign up to continue