gpt4 book ai didi

json - 使用 DS2 和 JSON 包时出错

转载 作者:行者123 更新时间:2023-12-04 18:35:00 24 4
gpt4 key购买 nike

我正在尝试使用为 SAS9.3 Maintenance 3 中的 proc ds2 提供的 JSON 包解析 JSON 文件,根据 Chris Hemedinger 的博客文章:

http://blogs.sas.com/content/sasdummy/2015/09/28/parse-json-from-sas/

在我重新启动 SAS session 之前一切似乎都运行良好,现在我不断收到消息:

ERROR: Compilation error.
ERROR: Line 883: Ambiguous method call for method createparser. Multiple method declarations
match the given argument list.

第 883 行(在本例中)指的是包含 createParser 调用的行。下面是一些可以重现错误的简化代码:

data have;
set sashelp.class;
run;

proc ds2;
data want;

dcl package json j();
dcl int rc;

method run();
set have;
rc = j.createParser( name );
end;

enddata;
run;
quit;

我做错了什么?

最佳答案

我认为你是对的,这是 SAS 的一个错误,不幸的是,我没有看到一种方法可以向 SAS 确认你使用的是方法 3 而不是方法 4。只需声明 name 作为字符是不够的,出于某种原因。我建议为此向 SAS 开票。

不过,我认为这里的方法 1 比方法 2 好,因为您真的不想指定小费大小。只需将其移至 INIT(它所属的位置)并使用 setparserinput,如 documentation 中所建议的那样:

data have;
set sashelp.class;
run;

proc ds2;
data want;

dcl package json j();
dcl double rc;
method init();
rc = j.createParser();
j.setParserInput(name);
end;

method run();
set have;
end;

enddata;
run;
quit;

此外,看起来该示例起作用的原因是 character set 参数。 UTF-8Unicode 将工作(后者由于其他原因实际上不会工作,但不会因这个原因而中断),而 WLatin1ANSIASCII 不会。显然将其设置为 UTF-8 字符会导致 SAS 意识到它确实是字符?

data have;
set sashelp.class;
run;

proc ds2;
data want(overwrite=yes);

dcl package json j();
dcl char(50) character set utf8 name;
dcl double rc;
method init();
rc = j.createParser( name );
end;

method run();
set have;
end;

enddata;
run;
quit;

关于json - 使用 DS2 和 JSON 包时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com