Serializes an ABL class-based object to the specified JSON stream.
Return type: VOID
Access: PUBLIC
Applies to: Progress.IO.JsonSerializer class
Serialize( INPUT object-reference AS Progress.Lang.Object,
INPUT output-stream AS Progress.IO.OutputStream )
|
The following code sample serializes and deserializes myObj:
DEFINE VARIABLE myFileOutStream AS Progress.IO.FileOutputStream.
DEFINE VARIABLE myFileInStream AS Progress.IO.FileInputStream.
DEFINE VARIABLE mySerializer AS Progress.IO.JsonSerializer.
DEFINE VARIABLE myObj AS Acme.MyClass.
myObj = NEW Acme.MyClass().
mySerializer = NEW Progress.IO.JsonSerializer(FALSE).
/* Serialize object */
myFileOutStream = NEW Progress.IO.FileOutputStream("MyClass.json").
mySerializer:Serialize(myObj, myFileOutStream).
myFileOutStream:Close().
/* Deserialize object */
myFileInStream = NEW Progress.IO.FileInputStream("MyClass.json").
myObj = CAST(mySerializer:Deserialize(myFileInStream), Acme.MyClass).
myFileInStream:Close().
|
The following is an example of a class (Acme.MyClass) to be serialized:
CLASS Acme.MyClass SERIALIZABLE:
DEFINE PUBLIC VARIABLE vMyint as INT NO-UNDO.
DEFINE PUBLIC PROPERTY pMychar AS CHAR
GET.
SET.
DEFINE PROTECTED SERIALIZABLE TEMP-TABLE myTT
FIELD myChar as CHAR
FIELD myInt as INT.
DEFINE PROTECTED SERIALIZABLE DATASET myDset for myTT.
CONSTRUCTOR PUBLIC MyClass():
vMyint = 5.
pMychar = "pMyCharProperty".
CREATE myTT.
myTT.myChar = "hello world".
myTT.myInt = 255.
END CONSTRUCTOR.
END CLASS.
|
The following is the resulting JSON produced (MyClass.json) from calling the Serialize( ) method:
{
"prods:version": 1,
"prods:objId": 1,
"Acme.MyClass": {
"vMyint": 5,
"pMychar": "pMyCharProperty",
"prods:datasets": {
"myDset": {
"myTT": [
{
"myChar": "hello world",
"myInt": 255
}
]
}
}
}
}
|