JSON 파일의 데이터를 SAS의 테이블로 가져 오려고합니다. 유감스럽게도 SAS JSON 엔진을 사용할 수 없습니다. 지금까지 거의 모든 데이터를 테이블에 저장했습니다. 몇 가지 값을 놓치고 있습니다.SAS JSON libname 엔진없이 JSON 파일 읽기
내 JSON 파일은 다음과 같다 :
내 SAS 코드는 다음과 같습니다{
"eventsLimited":false,
"events":[
{
"_id":"1",
"userId":"1",
"timestamp":"2017-05-07T21:37:39.037Z",
"detailedEvents":[
{
"eventType":"taskChanged",
"taskId":"111",
"changedProperties":[
{
"property":"totalSecondsSpent",
"oldValue":0,
"newValue":3600
},
{
"property":"totalSecondsEstimate",
"oldValue":0,
"newValue":144000
}
]
}
]
},
{
"_id":"2",
"userId":"1",
"timestamp":"2017-05-07T22:31:30.037Z",
"detailedEvents":[
{
"eventType":"taskChanged",
"taskId":"111",
"changedProperties":[
{
"property":"totalSecondsSpent",
"oldValue":3600,
"newValue":5400
}
]
}
]
}
]
}
:
을 :data iHave;
infile 'C:\Users\MyUser\Desktop\MyJSONFile.txt' recfm=n dlm='{}[],';
input value : $200. @@;
if value in: ('"count"' '"calls"') then
delete;
run;
libname iTest 'C:\Users\MyUser\Desktop';
data iTest.iTemp;
set iHave;
length name v $ 100;
if value =: '"_id"' then
n+1;
name=scan(value,2,'"','m');
v=scan(value,-2,'"','m');
drop value;
run;
이 나에게 다음과 같습니다 출력을 줄 것이다
지금까지 너무 좋아. 배열 안의 각 객체에 대해 카운터 (n)가 하나씩 증가하고 키와 값이 두 개의 다른 열에 표시됩니다.
제 문제는 changedProperties 배열 내부에있는 것을 얻지 못한다는 것입니다. 'oldValue'키와 'newValue'키의 두 값은 내 출력에 표시되지 않습니다. 예를 들어 첫 번째 newValue는 'v'열에서 3600이어야합니다.
아무도 내 코드를 고칠 수있는 방법을 알고 있으므로 출력을 제대로받을 수 있습니까? 문제는 숫자가 괄호 안에 표시되지 않고 스캔에서 괄호 안의 값으로 검색한다는 것입니다.
/크리스
완벽! 완벽하게 이해합니다. 지금 일하고있어! 당신은 내 문제를 해결했습니다. 대단히 감사합니다 – crellee
환영합니다. 그러나 스캔 기능의 두 번째 인수는 잘못되었습니다. 지금 고치다 – user2877959
오, 그래. 코드를 잘 설명해 주었기 때문에 코드를 복사하지 않았습니다. 직접 작성했습니다. – crellee