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