Skip to main content

JSON Arrays and JSON Objects

JSON Arrays and JSON Objects

ZWRITE without an argument displays JSON dynamic arrays and JSON dynamic objects as object references, for example:

USER>SET jarray = ["apples","oranges"]
USER>SET jobj = {"fruit":"apples","count":24}
USER>ZWRITE
jarray=<OBJECT REFERENCE>[1@%Library.DynamicArray]
jobj=<OBJECT REFERENCE>[2@%Library.DynamicObject]

ZWRITE with an argument displays the values of JSON dynamic arrays and JSON dynamic objects. This is shown in the following example:

A JSON array:

USER>SET jarray = ["apples","oranges"]
USER>SET jobj = {"fruit":"apples","count":24}
USER>ZWRITE jarray
jarray = ["apples","oranges"]  ; <DYNAMIC ARRAY>
USER>ZWRITE jobj
jobj = {"fruit":"apples","count":24}  ; <DYNAMIC OBJECT>  

ZWRITE without an argument displays an OREF value within a JSON object as shown in the following example:

USER>SET oref = ##class(%SQL.Statement).%New()
USER>SET jobj = {"ObjRef":(oref)}
USER>ZWRITE
jobj=<OBJECT REFERENCE>[4@%Library.DynamicObject]
oref=<OBJECT REFERENCE>[6@%SQL.Statement]

ZWRITE with an JSON object OREF argument displays an OREF value within a JSON object using a format like ("6@%SQL.Statement"):

USER>SET orefsql = ##class(%SQL.Statement).%New()
USER>SET jobjsql = {"ObjRef":(orefsql)}
USER>SET orefrs = ##class(%ResultSet).%New()
USER>SET jobjrs = {"ObjRef":(orefrs)}
USER>ZWRITE jobjsql
jobjsql={"ObjRef":("6@%SQL.Statement")}  ;  <DYNAMIC OBJECT>
USER>ZWRITE jobjrs
jobjrs={"ObjRef":("7@%Library.ResultSet")}  ;  <DYNAMIC OBJECT>

For information on object references (OREFs), see OREF Basics.

ZWRITE handles $DOUBLE values in a JSON object as follows:

ZWRITE without an argument

USER>SET jnum = {"doub":($DOUBLE(1.234))}
USER>SET jnan = {"doub":($DOUBLE("NAN"))}
USER>SET jinf = {"doub":($DOUBLE("-INF"))}
USER>ZWRITE
jinf=<OBJECT REFERENCE>[6@%Library.DynamicObject]
jnan=<OBJECT REFERENCE>[5@%Library.DynamicObject]
jnum=<OBJECT REFERENCE>[4@%Library.DynamicObject]

ZWRITE with a $DOUBLE JSON object argument:

USER>SET jnum = {"doub":($DOUBLE(1.234))}
USER>SET jnan = {"doub":($DOUBLE("NAN"))}
USER>SET jinf = {"doub":($DOUBLE("-INF"))}
USER>ZWRITE jnum
jnum={"doub":1.2339999999999999857}  ;  <DYNAMIC OBJECT>
USER>ZWRITE jnan
jnan={"doub":($DOUBLE("NAN"))}  ;  <DYNAMIC OBJECT>
USER>ZWRITE jinf
jnan={"doub":($DOUBLE("-INF"))}  ;  <DYNAMIC OBJECT>

For further details on handling JSON in ObjectScript, refer to the SET command.

FeedbackOpens in a new tab