json - 使用SAS解析Json文件

标签 json parsing sas

我第一次尝试使用 SAS 解析 Json 文件。 我在 Internet 上找到了一些脚本,并在 SAS 上尝试了此代码,但无法使其在我的 JSON 数据文件上运行。

data parsed; 
infile data lrecl=32000 truncover scanover dlm=",";
input @'"driver_id":{' driver_id $255.
  @'"publication_site_id":{' publication_site_id $255.
  @'"confirmed_seat_count":{' confirmed_seat_count $255.
  @'"published_date":{' published_date $255.
  @'"trip_date":{' trip_date $255.
  @'"first_publication_date":{' first_publication_date $255.
  @'"profile_picture_added_date":{' profile_picture_added_date $255.;

driver_id=scan(driver_id, 1, '",');
published_date=scan(published_date, 1, '",');   
trip_date   =scan(trip_date, 1, '",');
publication_site_id=scan(publication_site_id, 1, '",');
confirmed_seat_count    =scan(confirmed_seat_count, 1, '",');
first_publication_date  =scan(first_publication_date, 1, '",');
profile_picture_added_date  =scan(profile_picture_added_date, 1, '",');
run;

这是我的 Json 文件的概述

{
"driver_id": {"0":11450650,"1":4705453,"2":18873210,"3":4892472,"4":47572650,"5":5242675}, 
"publication_site_id":{"0":1056,"1":1056,"2":1056,"3":5056,"4":1056,"5":1056},
"confirmed_seat_count":{"0":2.0,"1":0.0,"2":1.0,"3":0.0,"4":0.0,"5":0.0},
"published_date":{"0":"2015-06-16 00:00:00","1":"2015-06-16 00:00:00","2":"2015-06-16 00:00:00","3":"2015-06-16 00:00:00","4":"2015-06-16 00:00:00","5":"2015-06-16 00:00:00"},
"trip_date":{"0":"2015-06-21 19:00:00","1":"2015-06-21 12:00:00","2":"2015-06-19 17:00:00","3":"2015-06-17 15:30:23","4":"2015-06-21 15:00:00","5":"2015-06-21 17:00:00"},
"first_publication_date":{"0":"2015-01-10 00:00:00","1":"2014-01-25 00:00:00","2":"2014-12-22 00:00:00","3":"2014-10-22 00:00:00","4":"2015-06-16 00:00:00","5":"2014-11-20 00:00:00"},
"profile_picture_added_date":{"0":null,"1":null,"2":"2015-09-22 00:00:00","3":"2013-11-19 00:00:00","4":"2015-06-17 00:00:00","5":null}
}

非常感谢您的帮助。

问候 SM

最佳答案

这应该对您有所帮助:

options noquotelenmax;
filename data temp lrecl=32000;

data _null_;
file data;
put '{
"driver_id": {"0":11450650,"1":4705453,"2":18873210,"3":4892472,"4":47572650,"5":5242675}, 
"publication_site_id":{"0":1056,"1":1056,"2":1056,"3":5056,"4":1056,"5":1056},
"confirmed_seat_count":{"0":2.0,"1":0.0,"2":1.0,"3":0.0,"4":0.0,"5":0.0},
"published_date":{"0":"2015-06-16 00:00:00","1":"2015-06-16 00:00:00","2":"2015-06-16 00:00:00","3":"2015-06-16 00:00:00","4":"2015-06-16 00:00:00","5":"2015-06-16 00:00:00"},
"trip_date":{"0":"2015-06-21 19:00:00","1":"2015-06-21 12:00:00","2":"2015-06-19 17:00:00","3":"2015-06-17 15:30:23","4":"2015-06-21 15:00:00","5":"2015-06-21 17:00:00"},
"first_publication_date":{"0":"2015-01-10 00:00:00","1":"2014-01-25 00:00:00","2":"2014-12-22 00:00:00","3":"2014-10-22 00:00:00","4":"2015-06-16 00:00:00","5":"2014-11-20 00:00:00"},
"profile_picture_added_date":{"0":null,"1":null,"2":"2015-09-22 00:00:00","3":"2013-11-19 00:00:00","4":"2015-06-17 00:00:00","5":null}
}';
run;

data parsed; 
infile data lrecl=32000 truncover scanover dlm='}' ;
input @'"driver_id": {' driver_id: $255.
  @'"publication_site_id":{' publication_site_id: $255.
  @'"confirmed_seat_count":{' confirmed_seat_count: $255.
  @'"published_date":{' published_date: $255.
  @'"trip_date":{' trip_date: $255.
  @'"first_publication_date":{' first_publication_date: $255.
  @'"profile_picture_added_date":{' profile_picture_added_date: $255.@@;
run;

我更新了分隔符(允许您保留内部对象,它们本身是分隔的),添加了冒号输入修饰符(允许您通过说“从下一个非空白列开始读取”来读取非标准值)并完成使用 @@ 尾随列指针来保存输出后续观察结果的记录(您的 json 可能会作为一个长流到达)。哦,我还为 @'"driver_id": {' 添加了一个空格 - 这是拼写错误吗?

我省略了扫描部分,我想你已经控制住了这一点!

关于json - 使用SAS解析Json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38609710/

相关文章:

JQuery.ajax 适用于除 IE 之外的所有平台

javascript - npm启动报错-文件路径找不到json包文件

c# - 对 RegEx 帮助不大

parsing - Golang 解析 json 响应

sas - 我正在尝试将 SFTP 文件(SAS 数据集或 token )从一台服务器传输到 SAS 中的另一台服务器

r - SAS 和 R 中的二项式检验 - 不同的结果

php - 如何遍历并访问多维和关联数组中的各种元素? PHP,JSON 或 XML

c# - 解析 JSON 对象数组

java - java中的类型安全解析

SAS:如何使用带有特殊字符$的表列