|
On Jun 15, 2021, at 8:46 AM, Stephen Piland <Stephen@xxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
Makes sense, Scott. Thanks! Not that I think about it, I have seen notes regarding that.
I am now getting RC = 1002 on the Data-Into command. I don't see an invalid character in file. IFS file is CCSID 1252. Job running as CCSID 37. Seems odd that parser thinks that file is 56 bytes when display attributes shows as 6884.
Any additional thoughts? Thanks!
=============================
Data length 56 bytes
Data CCSID 13488
Converting data to UTF-8
Allocating YAJL stream parser
Parsing JSON data (yajl_parse)
YAJL parser status 2 after 2 bytes
YAJL parser final status: 2
YAJL error: lexical error: invalid char in json text.
ReportError, RC = 1002
- Bytes parsed: 2
Terminating due to error
===================================
-----Original Message-----
From: RPG400-L <rpg400-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of
Scott Klement
Sent: Monday, June 14, 2021 5:06 PM
To: rpg400-l@xxxxxxxxxxxxxxxxxx
Subject: Re: YAJLGEN and Supposedly Simple JSON
Stephen,
You can't use countprefix to count the outermost element of a JSON document. Instead, you'll need to use position 372 of the program status data structure to determine how many elements there are.
dcl-ds pgmStat psds;
num_jsonDoc int(20) pos(372);
end-ds;
Good luck
On 6/14/2021 11:28 AM, Stephen Piland wrote:
I'm probably missing something super simple because I've used YAJLGEN to aid in creating process of DATA-INTO on some super complicated.--
Below is the code generated by YAJLGEN and it looks OK to the eye, but then the compiler obviously doesn't like num_jsonDoc 'outside' of the data structure.
Also below is a sample message used to generate the data structure. Any ideas how to tweak to get this working? Thanks!
==================================================
num_jsonDoc int(10) inz(0);
dcl-ds jsonDoc qualified dim(3);
ID varchar(9) inz('');
LASTUPDATETIME varchar(20) inz('');
end-ds;
=================================================
[
{
"id": "420319359",
"lastUpdateTime": "2021-05-27T17:37:14Z"
},
{
"id": "42I0187208",
"lastUpdateTime": "2021-04-22T18:41:58Z"
},
{
"id": "42I0187209",
"lastUpdateTime": "2021-04-22T18:41:59Z"
}
]
===================================================
data-into jsonDoc %DATA( ifsPathname
: 'doc=file case=convert countprefix=num_')
%PARSER( 'YAJLINTO'
: '{ "document_name": "jsonDoc", +
"number_prefix": "YAJL_" }');
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
--
This is the RPG programming on IBM i (RPG400-L) mailing list To post a
message email: RPG400-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe,
or change list options,
visit: https://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/rpg400-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate
link: https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.