I don't know if i will prefer override the %JSONExportToString and %JSONExportToStream or wrapping but that dirty trick..
Class test.elementList Extends (%ListOfObjects, %JSON.Adaptor)
{
/// The type (class name) of the elements stored in the collection.
Parameter ELEMENTTYPE = "test.element";
/// Returns this object as a JSON Stream
Method %JSONExportToStream(ByRef objStream As %Stream.Object, %mappingName As %String = "") As %Status
{
#Dim objStream As %Stream.TmpCharacter = ##class(%Stream.TmpCharacter).%New()
Do objStream.Write("[")
For i=1:1:..Size
{
Do ..GetAt(i).%JSONExportToStream(.objStream, %mappingName)
If (i<..Size)
{
Do objStream.Write(",")
}
}
Do objStream.Write("]")
Return $$$OK
}
/// Returns this object as a JSON string
Method %JSONExportToString(ByRef jsn As %String, %mappingName As %String = "") As %Status
{
#Dim jsonElement As %String = ""
Set jsn = "["
For i=1:1:..Size
{
Set jsonElement = ""
Do ..GetAt(i).%JSONExportToString(.jsonElement, %mappingName)
Set jsn = jsn_jsonElement
If (i<..Size)
{
Set jsn = jsn_","
}
}
Set jsn = jsn_"]"
Return $$$OK
}
}- Log in to post comments