Senior Software Engineer with over a decade of experience working with InterSystems Products.
Hi @Touggourt
Use can use _ToJSON() or
Embedded python post for more information
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.









Hello @Matheus Augusto
%Stream.TmpCharacter
is used to temporarily hold stream data in IRIS for application usage, typically in-memory and not persisted to the database.