rework optical presentation
use %JOB.Format for display
polish Online demo
clean IPM output
Sample for %JSONExport against a class with N:N Relationship
It is based on the object functionality of %JSON.Adaptor.cls
Make sure you have git and Docker desktop installed.
Clone/git pull the repo into any local directory
git https://github.com/rcemper/Object-based-M-N-to-JSON.git
Build the container with your project:
docker compose --progress plain build
Run the container
docker compose up -d
To follow the startup you may use
docker compose logs -f
After installing this sample, the following two commands can be run from terminal or console
docker-compose exec iris iris session iris
do ##class(JSONExportManyToMany.TeacherStudent).Populate()
do ##class(JSONExportManyToMany.TeacherStudent).Test()
{"Name":"Peter","Teachers":[{"ID":1,"Teacher":{"Name":"Teacher1Name"}},{"ID":2,"Teacher":{"Name":"Teacher2Name"}}]}{
"Name":"Peter",
"Teachers":[
{
"ID":1,
"Teacher":{
"Name":"Teacher1Name"
}
},
{
"ID":2,
"Teacher":{
"Name":"Teacher2Name"
}
}
]
}{"Name":"Nael","Teachers":[{"ID":3,"Teacher":{"Name":"Teacher1Name"}},{"ID":4,"Teacher":{"Name":"Teacher3Name"}}]}
{
"Name":"Nael",
"Teachers":[
{
"ID":3,
"Teacher":{
"Name":"Teacher1Name"
}
},
{
"ID":4,
"Teacher":{
"Name":"Teacher3Name"
}
}
]
}{"Name":"Teacher1Name","Students":[{"ID":1,"Student":{"Name":"Peter"}},{"ID":3,"Student":{"Name":"Nael"}}]}
{
"Name":"Teacher1Name",
"Students":[
{
"ID":1,
"Student":{
"Name":"Peter"
}
},
{
"ID":3,
"Student":{
"Name":"Nael"
}
}
]
}{"Name":"Teacher2Name","Students":[{"ID":2,"Student":{"Name":"Peter"}}]}
{
"Name":"Teacher2Name",
"Students":[
{
"ID":2,
"Student":{
"Name":"Peter"
}
}
]
}{"Name":"Teacher3Name","Students":[{"ID":4,"Student":{"Name":"Nael"}}]}
{
"Name":"Teacher3Name",
"Students":[
{
"ID":4,
"Student":{
"Name":"Nael"
}
}
]
}{"Name":"Teacher3Name","Students":[{"ID":4,"Student":{"Name":"Nael"}}]}
{
"Name":"Teacher3Name",
"Students":[
{
"ID":4,
"Student":{
"Name":"Nael"
}
}
]
}
USER>
You will notice here that when exporting from Student (First 2 output lines),
the relationship to Teacher is followed through TeacherStudent and details of the Teacher are exported.
Likewise, when exporting from Teacher, the relationship to Student is followed through
TeacherStudent and details of the Student are exported.