Re: Returned JSON with double array

cesco via RPG400-L <[email protected]>
Newsgroups gmane.comp.lang.as400.rpg
Message-ID <[email protected]>
 Pretty weird layout, especially if one wants to ease downstream parsers.As far as I know there isn't some direct and idiomatic array of array native construct in RPG, or anonymous internal ones.Also, there is always an impedance mismatch expected in json-rpg, due to the fact that an array in json can express different data types, see for example this idea (rejected due to limitations)https://ibm-power-systems.ideas.ibm.com/ideas/IBMI-I-4302
It's not clear what the intent is in defining a result such as you are getting, but, if you can and want to avoid direct parsing via YAJL or similar, you can try stock JSON_TABLE to single out that part, to get you started, src.json is your whole json   "     { "revenueDetails" : [ [..], [..] ] }    "


SELECT
    *
FROM src src, JSON_TABLE(
    src.json,
    '$.revenueDetails[*][*]'
    COLUMNS (
      name               VARCHAR(128)  PATH '$.name',
      description        VARCHAR(256)  PATH '$.description',
      ...
    )
) AS inner
    On Wednesday, December 10, 2025 at 02:17:38 PM GMT+1, Jerry Forss <[email protected]> wrote:  
 
 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.
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.