RE: External Returned JSON with double array

Jerry Forss <[email protected]>
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <BL1PPF07C40B43ABAF72532816F847F428BC6A0A@BL1PPF07C40B43A.namprd22.prod.outlook.com>
This is what I am attempting.  Not sure if it's the right approach.

The Buf looks like this.  How do I get it to be the actual json string?

ÀÁʬ>Í_ÂÁÊ███é██████████ÂÑ%%¬È?¬/ÄÄ?Í>Ȭ>Í_ÂÁÊ███████████ÂÑ%
%È?██#█>/_Á███ï <!äê ãè█ñ+àíëèêñáë█ñ+ä███/ÀÀÊÁËË█████████çá(
ëè|ä.█ëè███/ÀÀÊÁËË████&|█â|ì████████ÄÑÈ`███< █äê|ëëá███ËÈ/ÈÁ
¬ÑÀ███ïñ███:Ñø¬Ä?ÀÁ█████████'██Ä?%%ÁÄÈÑ?>¬_ÁÈÇ?À███&███øÑÁÄÁ
Ë█████ÏÁÑÅÇÈ███████ÏÁÑÅÇȬÍ_███<â███ÄÍËÈ?_Áʬ>/_Á███ï <!äê ã
è█ñ+àíëèêñáë█ñ+ä███ÂÑ%%¬ÀÑËÈ/>ÄÁ███████ÂÑ%%¬ÀÑËÈ/>ÄÁ¬Í_███(ñ
███ÃÊÁÑÅÇȬÄÇ/ÊÅÁ██████?ÈÇÁÊÄÇ/ÊÅÁÈ?È/%█████████È?È/%¬ÄÇ/ÊÅÁ
██████████Ê/ÈÁ██████Ê/ÈÁ¬È`øÁ███ã███Ê/ÈÁ¬Í>ÑȬÀÁËÄ███ã< è███ 

  Stream = '/IAccess/Ship/RtS/ShippingResponse.json';
  fd = open(stream: O_RDONLY);
  if (fd = 0);

    buf = *allx'20';
    dow (read(fd: %addr(Buf): %size(Buf)) > 0);
      Buf = %ScanRpl('[[' : '[' : Buf);
      Buf = %ScanRpl(']]' : ']' : Buf);
    enddo;

   // Save to new json

  endif;

  CallP Close(FD);      

-----Original Message-----
From: RPG400-L <[email protected]> On Behalf Of Jerry Forss
Sent: Wednesday, December 10, 2025 11:28 AM
To: RPG programming on IBM i <[email protected]>
Subject: RE: External Returned JSON with double array

Yep, I had my NotePad ++ brain going.

-----Original Message-----
From: RPG400-L <[email protected]> On Behalf Of Brad Stone
Sent: Wednesday, December 10, 2025 11:17 AM
To: RPG programming on IBM i <[email protected]>
Subject: Re: External Returned JSON with double array

There are no "lines" or "records" in an IFS file. It's a stream file.

On Wed, Dec 10, 2025 at 11:09 AM Jerry Forss <[email protected]> wrote:

> My SQL skills are limited.
>
> Does anyone have a bit of code to share that reads an IFS file, delete 
> lines and saves?
> I have written many pgms that create file and adds records, just not 
> reads and deleted lines.
>
> They mentioned today they are  "sunsetting" the old API in 9 days.
>
> -----Original Message-----
> From: RPG400-L <[email protected]> On Behalf Of Brad 
> Stone
> Sent: Wednesday, December 10, 2025 10:51 AM
> To: RPG programming on IBM i <[email protected]>
> Subject: Re: External Returned JSON with double array
>
> Lol...
>
> I remember the day when JSON was going to solve all the issues of non 
> conforming data layouts... and it just made it worse.  But still 
> better han XML any day of the week.  :)
>
> Probably outsourced development.  Even AI would do better than that. 
> :)
>
> On Wed, Dec 10, 2025 at 10:27 AM Jerry Forss <[email protected]> wrote:
>
> > Sorry
> >
> > Because they wrote it so it is right.
> >
> > -----Original Message-----
> > From: Jerry Forss
> > Sent: Wednesday, December 10, 2025 10:26 AM
> > To: RPG programming on IBM i <[email protected]>
> > Subject: RE: External Returned JSON with double array
> >
> > I have.
> >
> > Because
> >
> > -----Original Message-----
> > From: RPG400-L <[email protected]> On Behalf Of 
> > Brad Stone
> > Sent: Wednesday, December 10, 2025 10:00 AM
> > To: RPG programming on IBM i <[email protected]>
> > Subject: Re: External Returned JSON with double array
> >
> > Scary that this is valid JSON.  Have you contacted the people 
> > responsible to ask WF* is this all about?  lol I would certainly be 
> > asking them about the structure of that
> >
> > On Wed, Dec 10, 2025 at 9:25 AM Jerry Forss <[email protected]>
> wrote:
> >
> > > I suppose I could open the json, remove the extra [ ], save it and 
> > > then use the data-into.
> > > This seems like a silly way to do it but just not figuring out how 
> > > to define it correctly.
> > >
> > > YAJLGEN doesn't seem to know what to do with it either.
> > >
> > > -----Original Message-----
> > > From: RPG400-L <[email protected]> On Behalf Of 
> > > Jerry Forss
> > > Sent: Wednesday, December 10, 2025 7:17 AM
> > > To: RPG programming on IBM i <[email protected]>
> > > Subject: External Returned JSON with double array
> > >
> > > CAUTION: This email originated from outside of the organization. 
> > > Do not click links or open attachments unless you recognize the 
> > > sender and know the content is safe.
> > >
> > > One of our carriers has a replacement service that returns a json
> > response.
> > >
> > > In the response it has a double array defined and I am having 
> > > trouble defining it in my rpg.
> > > How do I define this correctly?
> > >
> > > Section of returned json.
> > >
> > >                "revenueDetails": [
> > >                               [
> > >                                              {
> > >                                                             "name":
> > > "D LIFTGATE",
> > >
> >  "description":
> > > "DELIVERY LIFTGATE",
> > >
>  "calc_rate":
> > > 55,
> > >
> > > "revenue_amount": 55,
> > >
> > > "freight_class_code": "92.5",
> > >                                                             "id": 26
> > >                                              },
> > >                                              {
> > >                                                             "name":
> > > "Minimum B",
> > >
> >  "description":
> > > "MINIMUM CHARGE",
> > >
>  "calc_rate":
> > > 97,
> > >
> > > "revenue_amount": 97,
> > >
> > > "freight_class_code": "92.5",
> > >                                                             "id": 170
> > >                                              },
> > >                                              {
> > >                                                             "name":
> > > "Fuel Surc",
> > >
> >  "description":
> > > "Fuel Surcharge",
> > >
>  "calc_rate":
> > > 0.33,
> > >
> > > "revenue_amount": 32.01,
> > >
> > > "freight_class_code": "92.5",
> > >                                                             "id": 68
> > >                                              }
> > >                               ]
> > >                ],
> > >
> > > From yajlgen
> > >
> > > num_REVENUEDETAILS int(10) inz(0); REVENUEDETAILS varchar(1) 
> > > dim(1); // empty;
> > >
> > > From my code
> > >
> > >     cnt_revenueDetails            Int(5);
> > >     Dcl-ds revenueDetails         Dim(25);
> > >       name                        Char(50);
> > >       description                 Char(100);
> > >       calc_rate                   Packed(7 : 3);
> > >       revenue_amount              Packed(7 : 2);
> > >       freight_class_code          Char(5);
> > >       id                          Char(5);
> > >     End-Ds;
> > > --
> > > This is the RPG programming on IBM i (RPG400-L) mailing list To 
> > > post a message email: [email protected] To subscribe, 
> > > unsubscribe, or change list options,
> > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> > > or email: [email protected]
> > > Before posting, please take a moment to review the archives at 
> > > https://archive.midrange.com/rpg400-l.
> > >
> > > Please contact [email protected] for any subscription 
> > > related questions.
> > >
> > > --
> > > This is the RPG programming on IBM i (RPG400-L) mailing list To 
> > > post a message email: [email protected] To subscribe, 
> > > unsubscribe, or change list options,
> > > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> > > or email: [email protected]
> > > Before posting, please take a moment to review the archives at 
> > > https://archive.midrange.com/rpg400-l.
> > >
> > > Please contact [email protected] for any subscription 
> > > related questions.
> > >
> > >
> > --
> > This is the RPG programming on IBM i (RPG400-L) mailing list To post 
> > a message email: [email protected] To subscribe, 
> > unsubscribe, or change list options,
> > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> > or email: [email protected]
> > Before posting, please take a moment to review the archives at 
> > https://archive.midrange.com/rpg400-l.
> >
> > Please contact [email protected] for any subscription 
> > related questions.
> >
> > --
> > This is the RPG programming on IBM i (RPG400-L) mailing list To post 
> > a message email: [email protected] To subscribe, 
> > unsubscribe, or change list options,
> > visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> > or email: [email protected]
> > Before posting, please take a moment to review the archives at 
> > https://archive.midrange.com/rpg400-l.
> >
> > Please contact [email protected] for any subscription 
> > related questions.
> >
> >
> --
> This is the RPG programming on IBM i (RPG400-L) mailing list To post a 
> message email: [email protected] To subscribe, unsubscribe, 
> or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: [email protected]
> Before posting, please take a moment to review the archives at 
> https://archive.midrange.com/rpg400-l.
>
> Please contact [email protected] for any subscription 
> related questions.
>
> --
> This is the RPG programming on IBM i (RPG400-L) mailing list To post a 
> message email: [email protected] To subscribe, unsubscribe, 
> or change list options,
> visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
> or email: [email protected]
> Before posting, please take a moment to review the archives at 
> https://archive.midrange.com/rpg400-l.
>
> Please contact [email protected] for any subscription 
> related questions.
>
>
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: [email protected]
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.

Please contact [email protected] for any subscription related questions.

--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: [email protected]
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.

Please contact [email protected] for any subscription related questions.

-- 
This is the RPG programming on IBM i (RPG400-L) mailing list
To post a message email: [email protected]
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: [email protected]
Before posting, please take a moment to review the archives
at https://archive.midrange.com/rpg400-l.

Please contact [email protected] for any subscription related questions.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.