Rather than JSON why not just use an IOLIST?
Something like this:
Client_ID$="123456"
Account$="ABC123"
Company$="MyCo"
!
MyIolist$=CPL("IOLIST Client_ID$, Account$, Company$")
Args$=REC(MyIolist$)
PROCESS "Panel","Library",Args$, MyIolist$
! ...
Then in the Pre_Create logic for the panel:
READ DATA FROM Arg_1$ TO IOL=ARG_2$
Now if you want to pass the data back add the following to the wrapup of the panel:
ARG_1$=REC(ARG_2$)
And after the PROCESS statement in the caller:
READ DATA FROM ARGS$ TO IOL=MyIolist$
This will allow you to pass not only ARG_nn$ values but actual variables by name.