Object-based-M-N-to-JSON

Downloads2
Subscribe
2
Bookmark
0
This application is not supported by InterSystems Corporation. Please be notified that you use it at your own responsibility.
Details
Releases
Reviews
Issues

What's new in this version

rework optical presentation
use %JOB.Format for display
polish Online demo
clean IPM output

Quality Gate Status

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.

Demo Server SMP
Demo Server WebTerminal

IPM installation
zpm "install object-m-n-to-json"
Rating
5 (1)
ObjectScript quality test
Passed
Updated on 11 December 2023
ObjectScript quality report
Category
Technology Example
Works with
InterSystems IRISInterSystems IRIS for Health
Tags
Info
Version
1.0.1
Last updated
2023-10-04
Repository
Open
Documentation
Open
License
Link