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

Reading JSON using YAJL



   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
-----------------------------------------------------------------------