Home Applications M-N-external-JSON

M-N-external-JSON

This application is not supported by InterSystems Corporation. Please be notified that you use it at your own risk.
5
1 reviews
0
Awards
187
Views
1
IPM installs
3
1
Details
Releases  (1)
Reviews  (1)
Issues
Articles  (2)
This app has a demo View
Export M:N Relationship with JSON using SQL

What's new in this version

Initial Release

Quality Gate Status

M:N export with external JSON

Sample for SQL methods JSON_OBJECT and JSON_ARRAY

This package is inspired by the broken package JSONExportManyToMany
The major difference is that instead of adding %JSONAdaptor to each class
I used SQL functions to create my JSON objects.
By this approach, you can add JSON to any class - even deployed ones -
without any need for change or recompile.
Additional features

  • dockerfile to be version independent
  • added support for IPM
  • added installation guide
  • added quality tag
  • added demo server
  • added WebTerminal
  • added pretty JSON presentation
  • added significant test dataset
  • added this useful README

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/JSONExport-ManyToMany-AD.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

Demo-data are imported from a previous package
It’s an extract from members in the Developer Community and the Badges available in GlobalMasters
Real names are scrambled.

  • Users have a collection of Badges and Levels
  • Badges have a collection of Users

Besides the straight projection of Members or Badges as Array of JSON objects
There is also

  • a JSON Object containing the Member Object and an Array of his Badge Objects
  • similar JSON Object containing a specific Badge Object and an Array of owning Member Objects

After installing this sample, the following two commands can be run from terminal or console

docker-compose exec iris iris session iris    
  • Members and Badges in the demo are referred by their ID
  • Suitable IDs could be found by straight SQL queries
  select top 10 %ID,BadgeCount from dc_data_rcc.DCmember  
  where BadgeCount>2 order by badgecount
  -
  select top 10 %ID,MbCnt from dc_data_rcc.GMbadge
  where MbCnt>3 order by 2

1) JSON by Badge

Provide ID and a Verbose switch for immediate display

 set b=##class(dc.data.rcc.JSON).byBadge(47,1)

demo1

2) JSON by Member

Provide ID instead of Verbose switch use explicit view

 set res=##class(dc.data.rcc.JSON).byMember(9976)
 zzjson res

demo2

3) Export all badges as JSON array

All you may provide is the Verbose switch

set badges=##class(dc.data.rcc.JSON).allBadges(1)

demo3

4) Export Members with at least ? badges

Provide minimal badge count and a Verbose switch for immediate display

 set badges=##class(dc.data.rcc.JSON).activeMembers(40,1)

Article in DC

Demo Server SMP
Demo Server WebTerminal

Made with
Install
zpm install m-n-json download archive
Version
0.0.126 Sep, 2023
ObjectScript quality test
Category
Technology Example
Works with
InterSystems IRISInterSystems IRIS for Health
First published
26 Sep, 2023
Last checked by moderator
01 Nov, 2023Works