我想解析JSON文件并将数据存储在SAS数据集中以下是JSON文件的示例。使用SAS PROC解析Json文件到SAS数据集DS2
现在我只是试图解析S数组作为第一步。它有2个对象,所以输出SAS数据集(最终目标是创建一个哈希表)将有2个观测值,如下所示。
1 14162 E NG 1455209 98
2 14163 EN NGG 1455210 784
这是我试过的代码....但没有得到任何行。由于DS2是SAS 9.4M3中的新功能,我无法找到很多文档。我想这是错误的"do while (j.ISRIGHTBRACE(tokenType));"
但不确定。
proc ds2;
data Snaps (overwrite=yes);
dcl package json j();
dcl nvarchar(30) Key value;
dcl varchar(1000000) character set utf8 response;
dcl int rc;
dcl package http webQuery();
dcl int rc tokenType parseFlags;
dcl nvarchar(128) token;
dcl integer i rc;
drop response rc;
retain i 0;
method init();
webQuery.createGetMethod('http://XXXXXXXX.com:9090/query?Date=20160211');
webQuery.executeMethod();
webQuery.getResponseBodyAsString(response, rc);
rc = j.createParser(response);
do while (rc = 0);
i=i+1;
j.getNextToken(rc, token, tokenType, parseFlags);
put token=;
if lowcase(strip(token)) = 'shots' then do;
put 'inside shots =-----------------------------------------';
j.getNextToken(rc, token, tokenType, parseFlags);
put '--------------------ARRAY---------------------' token=;
if j.ISLEFTBRACKET(tokenType) then do; *Entered in to an Array;
j.getNextToken(rc, token, tokenType, parseFlags);
put '------------------OBJECT-----------------------' token=;
if j.ISLEFTBRACE(tokenType) then do;*Entered in to an Object;
do while (j.ISRIGHTBRACE(tokenType));
j.getNextToken(rc, token, tokenType, parseFlags);
put '------------------KEY-----------------------' token=;
if j.ISSTRING(tokenType) then do;
Key=token;
j.getNextToken(rc, token, tokenType, parseFlags);
put '---------------------VALUE--------------------' token=;
Value=token;
Output;
end;
end;
end;
end;
end;
if i > 100 then stop;
end;
end; * method init;
method term();
rc = j.destroyParser();
end;
enddata;
run;
quit;
感谢.........
既然你用DS2来做,我假设你已经看过这篇博文:http://blogs.sas.com/content/sasdummy/2015/09/28/parse-json-from-萨斯/。我也必须解析一个JSON文件,这是非常困难的。 SAS只是没有一个简单的方法来解析这些......我设法使用数据步进行非常基本的解析,但它不可靠。我赞赏你使用DS2!它非常强大,但是很新,很少有人知道它。 –
@StuSztukowski:是的,那是我偶然发现的第一个使用非常基本的json文件的博客。我的Json结构非常复杂。我在我的问题中粘贴的Json文件只是我们实际Json的一部分。 –
你能提供一个你的JSON文件的完整结构的例子吗?您提供的样本非常简单,可以通过我认为的数据步骤进行处理,如果没有这些额外的信息,人们很难再帮助您。 – user667489