Skip to content
This repository was archived by the owner on Jan 25, 2026. It is now read-only.

rcemper/Object-based-M-N-to-JSON

Repository files navigation

 no maintenance or update

Object-based-M-N-to-JSON

Sample for %JSONExport against a class with N:N Relationship
It is based on the object functionality of %JSON.Adaptor.cls

Prerequisites

Make sure you have git and Docker desktop installed.

Installation

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

Testing

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()    
  • The test output should appear as follows:
{"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.

About

Sample for object method %JSONExport for M:N Relationship

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors