读取 JSON 文件并将其保存在 SAS 数据集中



我正在尝试从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;

知道我是怎么做到的吗???

将 firstobs=3 设置为忽略前两行,然后使用 / 输入修饰符读取下一行。两个尾随/忽略后续的 JSON 分隔符。

数据测试数据;    文件数据 lrecl=32000 truncover dsd firstobs=3 ;    输入 @'"id":' id $255。       /@"名称":名称 $255。       /@"金额":' 金额       /@"备注":"备注 $255。       /      /   ;跑;

最新更新