我正在尝试从JSON文件中读取数据并将值存储在SAS数据集中 这是我的JSON文件 test.json
[
{
"id":1,
"name":"Johnson, Smith and Jones Co.",
"amount":345.33,
"Remark":"Pays on time"
},
{
"id":2,
"name":"Sam, Smith",
"amount":993.44,
"Remark":""
},
{
"id":3,
"name":"Barney & Company",
"amount":0,
"Remark":"Great to work with and always pays with cash."
},
{
"id":4,
"name":"Johnson's Automotive",
"amount":2344,
"Remark":""
}
]
现在我希望输出像简单的SAS数据集一样,我可以作为表格形式获取。 如果我使用proc打印数据集,它将如下所示:
id name amount Remark
1 Johnson, Smith and Jones Co. 345.33 Pays on time
2 Sam, Smith 993.44
3 Barney & Company 0 Great to work with and always pays with cash.
4 Johnson's Automotive 2344
这是我的方法,但没有得到正确的输出。
LIBNAME src '/home/user/read_JSON';
filename data '/home/user/read_JSON/test.json';
data src.testdata;
infile data lrecl = 32000 truncover scanover;
input @'"id": "' id $255. @'"name": "' name $255. @'"amount": "' amount @'"Remark": "' Remark $255.;
id = substr(id,1,index(id,'",')-2);
name = substr( name,1,index( name,'",')-2);
amount = substr(amount,1,index(amount,'",')-2);
Remark = substr(Remark,1,index(Remark,'",')-2);
run;
proc print data=src.testdata;
RUN;
任何想法我怎么做???
答案 0 :(得分:2)
设置firstobs = 3忽略前两行,然后使用/
输入修饰符读取下一行。两个尾随/
忽略后续的JSON分隔符。
data testdata; infile data lrecl=32000 truncover dsd firstobs=3 ; input @'"id":' id $255. / @'"name":' name $255. / @'"amount":' amount / @'"Remark":' Remark $255. / / ; run;