[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reading JSON using YAJL



Doug,

I posted an example of this here:

http://www.code400.com/forum/forum/iseries-programming-languages/rpg-rpgle/143731-parse-json

Even though you say you're using HTTPAPI, your questions are about YAJL, not HTTPAPI. Therefore, they don't really belong on this mailing list. So, please respond to the forum, above.

-SK



On 11/4/2016 3:56 PM, Peterson, Doug wrote:
    I'm not familiar with JSON and having difficulties reading the array
    data form JSON file using YAJL.  I use HTTPAPI to post JSON transaction
    and receive the JSON result file into the IFS.  I'm able to parse the
    results JSON file for the object data, but when I try to extract the
    JSON array data I run into issues.  There are no errors, just null
    values are returned for the array data.  Any and all suggestions are
    appreciated.


    Below is the JSON I'm trying to read.  I can read the JSONN object data
    MessageID, MessageType, MessageTime, ApiVersion, but when I get to
    Payload I get null values.

    ·         "MessageId":"780f064a-4060-4197-a8d7-fa4c6fa8dbf0",

    ·         "MessageType":"LoadLocation",

    ·         "MessageTime":"2016-11-04T14:46:02.3266448+00:00",

    ·         "ApiVersion":"1.1",

    ·         "Payload":{

    o              "ResponseMessages":[

    1.                    {

    §                     "Msg":"Message Received and Queued for
    Processing.",

    §                     "Severity":"INFORMATION"

    §                  }

    o    ]

    ·         }

    ·         }


    Here is how I defined the JSON data in my program:

         D list_t          ds                  qualified

         D                                     template

         D   msg                        500a   varying

         D   msgsev                     500a   varying


         D result          ds                  qualified

         D   msgid                      500a   varying

         D   msgtype                    500a   varying

         D   msgtime                    500a   varying

         D   apiver                     500a   varying

         D   objname                    500a   varying

         D   list                              likeds(list_t) dim(999)


    Here is how I try to read the JSON data in my program:

             docNode = yajl_stmf_load_tree( '/kbxws/result.json' : errMsg
    );

             if errMsg <> '';

                // handle error

             endif;


             node = YAJL_object_find(docNode: 'MessageId');

             result.msgid = YAJL_get_string(node);


             node = YAJL_object_find(docNode: 'MessageType');

             result.msgtype = YAJL_get_string(node);


             node = YAJL_object_find(docNode: 'MessageTime');

             result.msgtime = YAJL_get_string(node);


             node = YAJL_object_find(docNode: 'ApiVersion');

             result.apiver = YAJL_get_string(node);


             node = YAJL_object_find(docNode: 'Payload');

             result.objname = YAJL_get_string(node);


             list = YAJL_object_find(docNode: 'ResponseMessages');


             i = 0;

             dow YAJL_ARRAY_LOOP( list: i: node );


                lastElem = i;


                val = YAJL_object_find(node: 'Msg');

                result.list(i).msg = yajl_get_string(val);


                val = YAJL_object_find(node: 'Severity');

                result.list(i).msgsev = yajl_get_string(val);


             enddo;


             yajl_tree_free(docNode);


             *inlr = *on;


    Doug Peterson



-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------

-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------