【发布时间】:2021-04-04 07:08:49
【问题描述】:
我正在尝试使用 YAJL 解析以下 JSON。 YAJLGEN 在数据结构下方生成,但我面临的问题是数组的数量,例如:KEY、CUSTOMER 不固定。为响应中的每个字段返回这些数组。我试图避免为响应中的每个字段定义一个数组。
能否请您告知是否有更好的方法来读取以下 json 并解析动态数组。我尝试使用“yajl_array_loop”、“yajl_array_elem”,但由于某种原因我无法让它在我的程序中工作。提前致谢。
{ “错误状态”:400, “错误”:{ “钥匙”: [ “关键字段是必需的。” ], “顾客”: [ “客户字段是必需的。” ] } }
dcl-ds jsonDoc 合格;
errstatus packed(3) inz(0);
dcl-ds 错误;
num_KEY int(10) inz(0);
KEY varchar(37) inz('') dim(1);
num_CUSTOMER int(10) inz(0);
客户 varchar(43) inz('') dim(2);
结束 ds;
结束ds;
【问题讨论】:
-
嗨,Rob,我认为如果您在调用 yajl 函数的地方显示更多代码,并解释一下它们是如何不工作的,那将是一个好主意。
-
Rob,我的理解是 YAJLGEN 创建的数据结构旨在与 DATA-INTO 操作码一起使用,您可以在其中编码 %PARSER('YAJLINTO')。您不必实际调用任何 yajl_ 函数。如果您通过调用 yajl_ 函数直接处理 JSON,您可以以任何您喜欢的方式定义您的 RPG 变量。你甚至不需要数据结构。
-
同意@BarbaraMorris ,YAJLGEN 也只是给你一个开始的地方。您可以根据自己的实际需要来优化它的输出。因此评论
// FIXME - The array lengths (dim keywords) are also guesses and should be adjusted based on your business rules的原因 -
也很可能使用 yajl_array_loop、yajl_array_elem 等动态地执行此操作。如果您清理问题、修复格式并发布您编写的不起作用的源代码,我们可以可能会指出实际问题以推动您前进。我自己和可能其他人不想从头开始写一个完整的例子来回答你的问题,因为我们还有其他事情要做。你在回答问题时所付出的努力与你提出问题所付出的努力高度相关。另见:stackoverflow.com/help/how-to-ask