Home Applications GlobalToJSON-Compact

GlobalToJSON-Compact

This application is not supported by InterSystems Corporation. Please be notified that you use it at your own risk.
5
1 reviews
0
Awards
266
Views
13
IPM installs
4
2
Details
Releases
Reviews
Issues
Pull requests
Articles
create a compact JSON Object from Global

What's new in this version

move to archive

GlobalToJSON-Compact

This package offers a utility to load a Global into JSON object and to create a
Global from this type of JSON object. Compact refers to the structure created.
Globals nodes are included with data for a fast data load.
But also the related code is quite compact.

Prerequisites

Make sure you have git and Docker desktop installed.

Installation

Clone/git pull the repo into any local directory

git clone https://github.com/rcemper/GlobalToJSON-Compact.git 

Run the IRIS container with your project:

docker-compose up -d --build

How to Test it

This is the pre-loaded Global ^dc.MultiD for testing.

Open IRIS terminal

$ docker-compose exec iris iris session iris
USER>

USER>; generate JSON object from Global

USER>set json=##class(dc.GblToJSON.C).do("^dc.MultiD")

USER>zw json
json={"gbl":["^dc.MultiD=5","^dc.MultiD(1)=$lb("Braam,Ted Q.",51353)","^dc.MultiD(1,"
mJSON")="{}"","^dc.MultiD(2)=$lb("Klingman,Uma C.",62459)","^dc.MultiD(2,2,"Multi
","a")=1","^dc.MultiD(2,2,"Multi","rob",1)="rcc"","^dc.MultiD(2,2,"Multi","ro
b",2)=2222","^dc.MultiD(2,"Multi","a")=1","^dc.MultiD(2,"Multi","rob",1)="rcc
"","^dc.MultiD(2,"Multi","rob",2)=2222","^dc.MultiD(2,"mJSON")="{""A"":""ah
ahah"",""Rob"":""VIP"",""Rob2"":1111,""Rob3"":true}"","^dc.MultiD(3)=
$lb("Goldman,Kenny H.",45831)","^dc.MultiD(3,"mJSON")="{}"","^dc.MultiD(4)=$lb("
","")","^dc.MultiD(4,"mJSON")="{""rcc"":122}"","^dc.MultiD(5)=$lb("","")",
"^dc.MultiD(5,&quot;mJSON&quot;)=&quot;{}&quot;"]} ; <DYNAMIC OBJECT>

USER>; this is rather hard to read and follow

USER>write $$Do^ZPretty(json)
{
"gbl":[
"^dc.MultiD=5",
"^dc.MultiD(1)=$lb(&quot;Braam,Ted Q.&quot;,51353)",
"^dc.MultiD(1,&quot;mJSON&quot;)=&quot;{}&quot;",
"^dc.MultiD(2)=$lb(&quot;Klingman,Uma C.&quot;,62459)",
"^dc.MultiD(2,2,&quot;Multi&quot;,&quot;a&quot;)=1",
"^dc.MultiD(2,2,&quot;Multi&quot;,&quot;rob&quot;,1)=&quot;rcc&quot;",
"^dc.MultiD(2,2,&quot;Multi&quot;,&quot;rob&quot;,2)=2222",
"^dc.MultiD(2,&quot;Multi&quot;,&quot;a&quot;)=1",
"^dc.MultiD(2,&quot;Multi&quot;,&quot;rob&quot;,1)=&quot;rcc&quot;",
"^dc.MultiD(2,&quot;Multi&quot;,&quot;rob&quot;,2)=2222",
"^dc.MultiD(2,&quot;mJSON&quot;)=&quot;{&quot;&quot;A&quot;&quot;:&quot;&quot;ahahah&quot;&quot;,&quot;&quot;Rob&quot;&quot;:&quot;&quot;VIP&quot;&quot;,&quot;&quot;Rob2&quot;&quot;:1111,&quot;&quot;Rob3&quot;&quot;:true}&quot;",
"^dc.MultiD(3)=$lb(&quot;Goldman,Kenny H.&quot;,45831)",
"^dc.MultiD(3,&quot;mJSON&quot;)=&quot;{}&quot;",
"^dc.MultiD(4)=$lb(&quot;&quot;,&quot;&quot;)",
"^dc.MultiD(4,&quot;mJSON&quot;)=&quot;{&quot;&quot;rcc&quot;&quot;:122}&quot;",
"^dc.MultiD(5)=$lb(&quot;&quot;,&quot;&quot;)",
"^dc.MultiD(5,&quot;mJSON&quot;)=&quot;{}&quot;"
]
}

Now we want to verify the load function.
First we make a copy of our source and then delete the source
After the load operation the source Global is completely restored

USER>merge ^keep=^dc.MultiD  

USER>kill ^dc.MultiD

USER>set sc=##class(dc.GblToJSON.C).load(json)

USER>zw sc
sc=1

USER>zw ^dc.MultiD
^dc.MultiD=5
^dc.MultiD(1)=$lb("Braam,Ted Q.",51353)
^dc.MultiD(1,"mJSON")="{}"
^dc.MultiD(2)=$lb("Klingman,Uma C.",62459)
^dc.MultiD(2,2,"Multi","a")=1
^dc.MultiD(2,2,"Multi","rob",1)="rcc"
^dc.MultiD(2,2,"Multi","rob",2)=2222
^dc.MultiD(2,"Multi","a")=1
^dc.MultiD(2,"Multi","rob",1)="rcc"
^dc.MultiD(2,"Multi","rob",2)=2222
^dc.MultiD(2,"mJSON")="{""A"":""ahahah"",""Rob"":""VIP"",""Rob2"":1111,""Rob3"":true}"
^dc.MultiD(3)=$lb("Goldman,Kenny H.",45831)
^dc.MultiD(3,"mJSON")="{}"
^dc.MultiD(4)=$lb("","")
^dc.MultiD(4,"mJSON")="{""rcc"":122}"
^dc.MultiD(5)=$lb("","")
^dc.MultiD(5,"mJSON")="{}"

USER>

New Version 0.1.2

The new version takes care of large Globals that may break your available memory.
So the JSON Object is exported to a file.

USER>write ##class(dc.GblToJSON.CX).export("^dc.MultiD")
File gbl.json created

And the related loader creates the Global

USER>write ##class(dc.GblToJSON.CX).import()
Global ^dc.MultiD loaded

and to see the generated file there is a show() method

USER>write ##class(dc.GblToJSON.CX).show()
{"gbl":[
"^dc.MultiD=5",
"^dc.MultiD(1)=$lb(\"Braam,Ted Q.\",51353)",
"^dc.MultiD(1,\"mJSON\")=\"{}\"",
"^dc.MultiD(2)=$lb(\"Klingman,Uma C.\",62459)",
"^dc.MultiD(2,2,\"Multi\",\"a\")=1",
"^dc.MultiD(2,2,\"Multi\",\"rob\",1)=\"rcc\"",
"^dc.MultiD(2,2,\"Multi\",\"rob\",2)=2222",
"^dc.MultiD(2,\"Multi\",\"a\")=1",
"^dc.MultiD(2,\"Multi\",\"rob\",1)=\"rcc\"",
"^dc.MultiD(2,\"Multi\",\"rob\",2)=2222",
"^dc.MultiD(2,\"mJSON\")=\"{\"\"A\"\":\"\"ahahah\"\",\"\"Rob\"\":\"\"VIP\"\",\"\"Rob2\"\":1111,\"\"Rob3\"\":true}\"",
"^dc.MultiD(3)=$lb(\"Goldman,Kenny H.\",45831)",
"^dc.MultiD(3,\"mJSON\")=\"{}\"",
"^dc.MultiD(4)=$lb(\"\",\"\")",
"^dc.MultiD(4,\"mJSON\")=\"{\"\"rcc\"\":122}\"",
"^dc.MultiD(5)=$lb(\"\",\"\")",
"^dc.MultiD(5,\"mJSON\")=\"{}\""
]}
***** gbl.json *****
USER>

q.a.d.

Article in DC

Video

Read more
Made with
Install
zpm install gbl-to-json-c download archive
Version
0.1.516 Sep, 2023
Ideas portal
https://ideas.intersystems.com/ideas/DP-I-156
ObjectScript quality test
Category
Technology Example
Works with
InterSystems IRIS
First published
25 Jan, 2022
Last checked by moderator
01 Nov, 2023Works