The following code has been tested on versions 2015.2 and 2017.2:
Class dc.demo Extends %RegisteredObject
{
Property f1 As %String;
Property f2 As %Integer;
Property f3 As %ListOfDataTypes;
Method GetTarget(
ByRef pParms As %String,
Output pObj As %RegisteredObject) As %Status
{
s pObj = ..%New()
i $g(pParms(1))="a" {
s pObj.f1 = "Peter"
s pObj.f2 = 21
}else{
s pObj.f1 = "Bob"
s pObj.f2 = 12
s pObj.f3 = ##class(%ListOfDataTypes).%New()
d pObj.f3.InsertList($lb("a","b","c"))
}
q $$$OK
}
ClassMethod Obj2Json()
{
;d ##class(dc.demo).Obj2Json()
s parms(1)="a"
d ##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.stream,..%New(),"GetTarget",.parms,$$$YES,"aeloq")
w "1) ",stream.Read($$$MaxLocalLength),!
k parms
d ##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.stream,..%New(),"GetTarget",.parms,$$$YES,"aeloq")
w "2) ",stream.Read($$$MaxLocalLength),!
}
ClassMethod Json2Obj()
{
;d ##class(dc.demo).Json2Obj()
d ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject("{""f1"":""Peter"",""f2"":21,""f3"":[]}",$classname(),.obj)
w obj.f1," : ",obj.f3.Count(),!
d ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject("{""f1"":""Bob"",""f2"":12,""f3"":[""a"",""b"",""c""]}",$classname(),.obj)
w obj.f1," : ",obj.f3.Count(),!
}
}Result:
USER>d ##class(dc.demo).Obj2Json()
1) {"f1":"Peter","f2":21,"f3":[]}
2) {"f1":"Bob","f2":12,"f3":["a","b","c"]}
USER>d ##class(dc.demo).Json2Obj()
Peter : 0
Bob : 3- Log in to post comments
