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 } ] } } } } |