JSON improvements

OpenEdge Release 11.7 supports the following improvements to JSON management in ABL:

Serialization and deserialization ofProgress.Lang.Objectfields — Previous releases have supported the ability to serialize and deserialize ABL class-based objects to and from a JSON representation using methods of the built-in Progress.IO.JsonSerializer class. However, handle methods for reading and writing JSON representations of buffers, temp-tables, and ProDataSets were restricted from serializing and deserializing any Progress.Lang.Object fields for temp-tables.

With this release, both the WRITE-JSON( ) and SERIALIZE-ROW( ) methods now serialize these fields for any buffers, temp-tables, and ProDataSets that they write to a JSON representation. Also, the READ-JSON( ) method deserializes these fields for any JSON representation that it reads into buffers, temp-tables, and ProDataSets.

Writing aJsonArrayorJsonObjectobject target from an ABL data object — Previous releases have supported the ability to read a Progress.Json.ObjectModel.JsonArray or Progress.Json.ObjectModel.JsonObject source into an appropriate buffer, temp-table, or ProDataSet object handle using its READ-JSON( ) method. However, writing to similar JsonArray and JsonObject targets using the WRITE-JSON( ) and SERIALIZE-ROW( ) methods was not supported.

With this release, both the WRITE-JSON( ) and SERIALIZE-ROW( ) methods can now write to an appropriate Progress.Json.ObjectModel.JsonArray or Progress.Json.ObjectModel.JsonObject target when called on a corresponding buffer, temp-table, or ProDataSet object handle.

This support includes changes to some of the options available when calling these methods for the new targets, for example, use of the omit-outer-object parameter when calling WRITE-JSON( ).