User bio

Senior Software Engineer with over a decade of experience working with InterSystems Products.

Member since Apr 27, 2017
Replies:

Instead of using obj.%Get("property"), you can use %IsDefined("key"), which returns 1 if the key exists.

You can also use %Get("key",, "type"), where the optional type parameter specifies the expected return type. This helps prevent <MAXSTRING> errors when handling values near IRIS's maximum string length.

To enable native JSON support in a persistent class, extend %JSON.Adaptor. This provides built-in methods such as:

  • %JSONImport() — Imports a JSON or DAO directly into the object.
  • %JSONExport()— Export and display the value in the device
  • %JSONExportToString()— Export the value as a string.
  • %JSONExportToStream() — Export the value as a stream
Class Company.Employee Extends (%Persistent,%JSON.Adaptor) {
    Property Name As %String(MAXLEN=50);
    Property Age As %Integer;
    Property Department As %String(MAXLEN=50);

ClassMethod LoadData() As %Staus
{
    Set json = {"Name":"Test", "Age": 20, "Department": "IT"}
    Set obj = ..%New()
    Set sc = obj.%JSONImport(json)
    Set sc = obj.%Save()
    Return sc
}

ClassMethod ExportDataAsJSONString(Id) As %String
{
    Set obj = ..%OpenId(Id)
    Do obj.%JSONExportToString(.string)
    Return string
}

ClassMethod ExportDataAsJSONStream(Id) As %Steam.Object
{
    Set obj = ..%OpenId(Id)
    Do obj.%JSONExportToStream(.stream)
    Return stream
}
}

    If you're working with classes, it's recommended to use object-based or SQL-based data manipulation rather than directly using globals.

    Open Exchange applications:
    Certifications & Credly badges:
    Global Masters badges:
    Followers:
    Following: