2014-01-14 195 views
2

我试图读取JSON文件中的数据,并存储在SAS数据集 这里的价值是我的JSON文件test.json读取JSON文件并将其保存在SAS数据集中

[ 
    { 
    "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

[在SAS的宏解析JSON对象]的可能重复(http://stackoverflow.com/questions/21115091/parse-json-object-in-sas-macro) – Joe

回答

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; 
+0

由于.....我有一些记录....但不是全部.....我有输出lst文件...我怎么可以附上? – goldenbutter

相关问题