User bio
404 bio not found
Member since Sep 2, 2020
Posts:
Alister has not published any posts yet.
Replies:

Hi Menno,

Currently your solution creates an "extra" node because of the code Do jsonObj1.%Set("", obj2). %Set will always create a new node with parameter 1 as the key and parameter 2 as the value.

It seems like what you really want to do is append all of the objects in obj2.OptOuts with obj1.OptOuts. You can do this by iterating through Obj2.OptOuts and using %Push to append each to Obj1.OptOuts. I've modified the code you provided to accomplish this:

Class Test.TestClass
{
  ClassMethod xxx() As %Status
  {
    Set tSc = $$$OK

    Set jsonObj1 = {}.%FromJSON("C:\temp\1.json")
    Set jsonObj2 = {}.%FromJSON("C:\temp\2.json")

    Do jsonObj1.%Remove("NextCursor")
    Do jsonObj2.%Remove("NextCursor")

    Set obj1 = jsonObj1.%Get("OptOuts")
    Set obj2 = jsonObj2.%Get("OptOuts")

    Set OptOuts2Iter = obj2.%GetIterator()
    While OptOuts2Iter.%GetNext(.key , .value ) {
      Do obj1.%Push(value)
    }

    Set objString = jsonObj1.%ToJSON()
    Set formatter = ##class(%JSON.Formatter).%New()
    Do formatter.FormatToStream(jsonObj1, .Streamobj)

    Set ResponseStream = ##class(%Stream.FileBinary).%New()
    Set ResponseStream.Filename = "C:\temp\3.json"
    Do ResponseStream.CopyFrom(.Streamobj)
    Set tSc = ResponseStream.%Save()
    Do ResponseStream.%Close()
    Return tSc
  }
}
Certifications & Credly badges:
Alister has no Certifications & Credly badges yet.
Global Masters badges:
Alister has no Global Masters badges yet.
Followers:
Following:
Alister has not followed anybody yet.